2009-12-11 52 views
2

我有ListBox的風格。在ListBox風格我有ListBoxItems的風格。所有這些都在本節中。WPF - 在A風格模板中捕捉CLR事件

我想要捕獲列表框項目的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中這樣做,如果有其他方法可以通過後面的代碼來做到這一點,只是不知道如何從代碼後面訪問資源模板。

+0

我遇到了同樣的問題,嘗試將WPFToolkit提示與技巧的DataGrid中顯示的代碼移動到資源字典中定義的樣式中。 http://wpf.codeplex.com/wikipage?title=Single-Click%20Editing&referringTitle=Tips%20%26%20Tricks – jpierson 2010-06-04 00:15:00

回答

1

不幸的是,EventTrigger只能在RoutedEvents(MSDN)上工作,在這種情況下不可能使用CLR事件。

從文章:

...而EventTrigger對象開始行動的一組 時指定的路由 事件發生。

+0

有沒有其他方法可以讓我的模板項目獲得該事件? – Vaccano 2009-12-11 19:24:26