WPF - 在A Style模板中捕获CLR事件

时间:2009-12-11 17:25:13

标签: wpf events templates styles

我有一个ListBox的样式。在ListBox样式中,我有ListBoxItems的样式。所有这一切都在本节中。

我想捕获列表框项目的IsEnabledChanged事件(请参阅this question了解原因)。我尝试设置EventSetter,但无法看到该事件,因为它不是“路由事件”。

如何将事件附加到此模板项目? (请记住,它不附加到特定的ListBox本身。它是

中的一种风格

以下是一些示例代码,用于说明我在说什么。

<Style x:Key="CheckBoxListStyle" TargetType="ListBox">
    <Style.Resources>
        <Style TargetType="ListBoxItem">
            <EventSetter Event="IsEnabledChanged" Handler="OnEnabledChanged"\>
            ....                     ^ 
                                     |
            This is not allowed ------

无法找到此活动。试图获得更具体的ListBoxItem.IsEnabledChanged并没有帮助。

编辑: 我没有在XAML中这样做。如果有其他方法可以通过后面的代码执行此操作,那将同样好。我只是不知道如何从后面的代码访问资源模板。

1 个答案:

答案 0 :(得分:1)

不幸的是,EventTrigger只适用于RoutedEvents(MSDN),在这种情况下不可能使用CLR事件。

来自文章:

  

...当EventTrigger对象启动一个集合时   指定路由时的操作数   事件发生。