- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已将 MapPolyline 添加到我的 Bing map 。但是, map 似乎只吞没了 LeftMouseUp 事件。该事件适用于 MouseDown 甚至 RightMouseUp,但不适用于 LeftMouseUp。对于我的设计,我必须使用 LeftMouseUp 事件,不能使用其他事件。为什么事件没有触发,我该如何解决?
public MainWindow()
{
InitializeComponent();
var testLine = new MapPolyline();
var locations = new LocationCollection();
locations.Add(new Location(50, 50));
locations.Add(new Location(50, 60));
locations.Add(new Location(50, 70));
testLine.Locations = locations;
testLine.Stroke = Brushes.Black;
testLine.StrokeThickness = 15;
testLine.PreviewMouseDown += ExampleHandlerDown;
testLine.PreviewMouseUp += ExampleHandlerUp;
MainMap.Children.Add(testLine);
}
private void ExampleHandlerDown(object sender, MouseEventArgs e)
{
Console.WriteLine("Mouse Down");
}
private void ExampleHandlerUp(object sender, MouseEventArgs e)
{
Console.WriteLine("Mouse Up");
}
<Window x:Class="StackQuestion.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:m="clr-namespace:Microsoft.Maps.MapControl.WPF;assembly=Microsoft.Maps.MapControl.WPF"
mc:Ignorable="d"
Title="MainWindow" Height="700" Width="1300">
<m:Map Name="MainMap" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" CredentialsProvider="My Credentials"/>
</Window>
运行代码有以下结果: - 单击鼠标左键仅打印“鼠标按下” - 鼠标右键单击打印“鼠标按下”和“鼠标向上”鼠标左键单击应与鼠标右键单击行为相匹配。
最佳答案
您必须首先在您的 ExampleHandlerDown
函数中设置 e.Handled = true;
以便它知道在处理 Down 事件后调用 MouseUp
private void ExampleHandlerDown(object sender, MouseEventArgs e)
{
Console.WriteLine("Mouse Down");
e.Handled = true;
}
为什么会这样?
不处理鼠标按下事件(尤其是预览鼠标按下事件)将导致鼠标按下事件移动到下一层即 map ;这意味着 map 也接收到鼠标按下事件。当鼠标按下事件阻止您的鼠标弹起时, map 正在做一些可疑的事情。
添加这些看看我的意思
MainMap.MouseDown += MainMap_MouseDown;
MainMap.MouseUp += MainMap_MouseUp;
private void MainMap_MouseUp(object sender, MouseButtonEventArgs e)
{
Console.WriteLine("Map Mouse Up");
}
private void MainMap_MouseDown(object sender, MouseButtonEventArgs e)
{
Console.WriteLine("Map Mouse Down <-- Something going on in here");
}
注释掉你的e.Handled = true
,你会在这个输出中看到这个
Mouse Down
Map Mouse Down <-- Something going on in here
Map Mouse Up
将你的 e.Handled = true
行放回去,你会看到这个输出
Mouse Down
Mouse Up
Map Mouse Up
因此您会看到所有未处理的事件都被传递到 map 。您可能也应该处理鼠标弹起事件,以防止 map 做任何您不想要的奇怪事情。我猜它在右键单击时不会做任何可疑的事情。您需要查看 bing map 的来源以了解它的实际作用
关于c# - LeftMouseUp 未触发 - Bing map MapPolyline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56228560/
我正在尝试在我的 map 中使用 MapPolyLine 来显示实时路线,希望它会移动/缩放 this time .问题是路线没有显示在 map 上,我找不到任何编程错误: C# MapLayer p
我有一个 MapPolyline我的 QtQuick 项目中的对象。我需要更改 C++ 文件中的路径属性,但我不知道该怎么做。 我的 qml - 文件: MapPolyline { id: m
我已将 MapPolyline 添加到我的 Bing map 。但是, map 似乎只吞没了 LeftMouseUp 事件。该事件适用于 MouseDown 甚至 RightMouseUp,但不适用于
我使用 C++ 中的 QGeopath 和 Pathcontroller 类绘制 mapPolyline。现在我想清除那个 mapPolyline。我正在使用 Qgeopath 类中的 clearPa
这是一个 QML 映射: Map { anchors.fill: parent plugin: osmMapPlugin center: QtPosit
我正在使用诺基亚的 WP 8 新 map 。 来自xaml的mappolyline有点问题,它不会显示。 试过(删除了一些初始化代码): 其中 Coords 只是 GeoCoordinateColle
我向 map 控件添加了一个 MapPolyline,如下所示: ... 这最初看起来不错。但是,如果我平移或缩放 map ,MapPolyline 不会相应地移动 -
我在使用 MapPolyline 时遇到了一些问题。如果缩小,它会以某种方式错误地呈现 gps 轨迹。 在较低的 mapControl.ZoomLevel(例如 9)下,一些线/边仍然被绘制,但它们不
我是一名优秀的程序员,十分优秀!