我的WPF程序使用具有WPF map 控件的第三方 map 包。我的程序需要能够在没有安装该软件的系统上运行,并且需要足够智能来识别该软件何时安装并使用它。这意味着我无法在表单的 XAML 文件中包含 map 控件的任何 XAML,否则会引发 XAML 解析异常。
我有一种方法可以确定软件是否已安装。在我的程序的初始化代码中,如果安装了 map 软件,我将 Application 对象的一个名为 MapsAreInstalled
的属性设置为 true,如果未安装,则将其设置为 false。
在我的表单(UserControl)中,我添加了 OnApplyTemplate 方法的重写。这将检查 MapsAreInstalled
属性的值,如果该值为 true,则创建一个新的 map 控件。下面是我在必须改变方法之前用来创建此控件的 XAML:
<telogis:MapControl ButtonBase.Click="CarImage_Click"
Canvas.Left="0"
Canvas.Top="0"
Center="41.366674544084,-73.6112966322899"
DragBehavior="None"
Heading="0"
Height="{Binding ElementName=ChannelCanvas, Path=ActualHeight}"
MapQuality="Perfect"
Name="ReadMap"
Perspective="TwoD"
RenderLabels="True"
UiEnable="True"
Width="{Binding ElementName=ChannelCanvas, Path=ActualWidth}"
Zoom="50" />
我知道如何在代码背后初始化所有这些属性,除了 ButtonBase.Click
事件处理程序。如何在代码隐藏中进行设置?
托尼
最佳答案
我找到了这个问题的答案:
RoutedEventHandler clickHandler = MyClickHandler;
mapCtrl.AddHandler( ButtonBase.ClickEvent, clickHandler );
无论如何,谢谢。
关于wpf - 在 WPF 代码后面设置事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10840487/