在 WPF 代码后面设置事件处理程序

Ton*_*ile 2 wpf xaml

我的 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事件处理程序。如何在代码隐藏中进行设置?

托尼

Ton*_*ile 5

我找到了这个问题的答案:

RoutedEventHandler clickHandler = MyClickHandler;
mapCtrl.AddHandler( ButtonBase.ClickEvent, clickHandler );
Run Code Online (Sandbox Code Playgroud)

不管怎么说,还是要谢谢你。