代码之家  ›  专栏  ›  技术社区  ›  Vaccano

wpf-捕获样式模板中的clr事件

  •  2
  • Vaccano  · 技术社区  · 15 年前

    我有一种风格 ListBox . 在 列表框 Style我有一个ListBoxItems的样式。所有这些都在这部分。

    我想抓住 IsEnabledChanged 列表框项的事件(请参见 this question 为什么?我试图建立一个 EventSetter 但它看不到该事件,因为它不是“路由事件”。

    如何将事件附加到此模板化项目?(请记住,它没有附加到特定的 列表框 本身。它是一种风格

    这里有一些示例代码来显示我在说什么。

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

    找不到这个事件。试图更具体一些 ListBoxItem.IsEnabledChanged 无济于事。

    编辑: 我不打算在XAML中这样做。如果有其他方法通过背后的代码来实现这一点,那也一样好。我只是不知道如何从代码隐藏中访问资源模板。

    1 回复  |  直到 13 年前
        1
  •  1
  •   Ben Collier    15 年前

    不幸的是,事件触发器只能在RoutedEvents上工作( MSDN )在这种情况下不可能使用CLR事件。

    从文章中:

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