我的 WPF 程序使用具有 WPF 地图控件的第三方地图包。我的程序需要能够在没有安装该软件的系统上运行,并且需要足够智能来识别该软件何时安装并使用它。这意味着我无法在表单的 XAML 文件中包含地图控件的任何 XAML,否则会引发 XAML 解析异常。
我有一种确定软件是否已安装的技术。在我的程序的初始化代码中,我设置了 Application 对象的一个属性,名为MapsAreInstalled
为 true,如果未安装,则将其设置为 false。
在我的表单(即 UserControl)中,我添加了 OnApplyTemplate 方法的重写。这将检查属性的值MapsAreInstalled
,如果该值为 true,则创建一个新的地图控件。以下是我在必须改变方法之前用来创建此控件的 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" />
Run Code Online (Sandbox Code Playgroud)
我知道如何在背后的代码中初始化所有这些属性,除了ButtonBase.Click
事件处理程序。如何在代码隐藏中进行设置?
托尼
我找到了这个问题的答案:
RoutedEventHandler clickHandler = MyClickHandler;
mapCtrl.AddHandler( ButtonBase.ClickEvent, clickHandler );
Run Code Online (Sandbox Code Playgroud)
不管怎么说,还是要谢谢你。