我有一個自定義控件,它有一個名爲ViewModel的依賴屬性,其值顯示在ContentPresenter
內。對於每種類型的ViewModel,我有一個DataTemplate
。每個模板都允許用戶以不同的方式進行選擇,並且我需要在後面的自定義控制代碼中處理該選擇事件。如何處理WPF DataTemplate中的事件?
<Style TargetType="{x:Type local:MyCustomControl}">
<Style.Resources>
<ResourceDictionary>
<DataTemplate DataType="{x:Type local:ViewModelOne}">
<!-- how to handle this event? -->
<ListBox
MouseDoubleClick="ListBox_MouseDoubleClick"/>
</DataTemplate>
<DataTemplate DataType="{x:Type local:ViewModelTwo}">
<!-- this ListBox has another style, but event should
be handled the same way -->
<ListBox
MouseDoubleClick="ListBox_MouseDoubleClick"/>
</DataTemplate>
<!-- more templates here -->
</ResourceDictionary>
</Style.Resources>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:MyCustomControl}">
<ContentPresenter Content="{TemplateBinding ViewModel}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
編輯:
這裏與我想的方法自定義控件背後的代碼被調用時什麼東西在ListBox
被雙擊:
public class MyCustomControl : Control
{
// how to attach ListBox MouseDoubleClick event to this method?
private void ListBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
DoMagic(((ListBox)sender).SelectedItem);
}
}
得到了同樣的問題的代碼。你能發佈你的實際解決方案嗎? –