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

时间:2012-05-31 20:02:30

标签: wpf xaml

我的WPF程序使用具有WPF地图控件的第三方地图包。我的程序需要能够在没有安装此软件的系统上运行,并且需要足够智能以识别软件的安装和使用时间。这意味着我不能在我的表单的XAML文件中包含任何XAML用于映射控件,或者抛出XAML解析异常。

我有一种确定软件是否已安装的技术。在我的程序的初始化代码中,如果安装了映射软件,我将名为MapsAreInstalled的Application对象的属性设置为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" />

我知道如何在除ButtonBase.Click事件处理程序之外的代码中初始化所有这些属性。如何在代码隐藏中设置它?

1 个答案:

答案 0 :(得分:4)

我找到了这个答案:

RoutedEventHandler clickHandler = MyClickHandler;
mapCtrl.AddHandler( ButtonBase.ClickEvent, clickHandler );

非常感谢。