2012-05-31 55 views
1

我的WPF程序使用具有WPF地图控件的第三方地图包。我的程序需要能够在没有安装该软件的系统上运行,并且需要足够的智能来识别何时安装和使用该软件。这意味着我不能在表单的XAML文件中包含任何用于映射控件的XAML,或者引发XAML分析异常。在WPF代码中设置事件处理程序

我有一种技术来确定软件是否安装。在我的程序的初始化代码中,如果安装了映射软件,我将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" /> 

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

托尼

回答

4

我发现这个问题的答案之一:

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

还是要谢谢你。

相关问题