【问题标题】:Setting Event Handler in WPF code behind在 WPF 代码中设置事件处理程序
【发布时间】:2012-05-31 20:02:29
【问题描述】:

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

我有一种技术可以确定软件是否已安装。在我的程序的初始化代码中,如果安装了映射软件,我将 Application 对象的一个​​名为 MapsAreInstalled 的属性设置为 true,如果没有安装,我将其设置为 false。

在我的表单(用户控件)中,我添加了对 OnApplyTemplate 方法的覆盖。这将检查MapsAreInstalled 属性的值,如果该值为真,则创建一个新的地图控件。这是我用来创建此控件的 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 事件处理程序除外。如何在代码隐藏中进行设置?

托尼

【问题讨论】:

    标签: wpf xaml


    【解决方案1】:

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

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

    还是谢谢。

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多