我想了解如何在不使用ResourceDictionary Code Behind(例如Styles.xaml.cs)的情况下处理ResourceDictionary[例如Style.xaml]中控件中的事件,主要是因为我希望Styles.xaml只用于样式设置。
我的场景是,我有一个自定义页面,它将ResourceDictionary用于DataTemplate样式(我使用的是TemplateSelector)。然而,我目前遇到的问题是处理事件。例如:
我的Styles.xaml:中有这个
.
.
<Button Click="Button_Click"/>
.
我在CustomPage.xaml.cs:中声明
private void Button_Click(object sender, RoutedEventArgs e)
{
// some code
}
然而,它不起作用。有没有任何方法可以明确地告诉我要为按钮的单击事件使用特定的事件处理程序?此外,是否可以为每个页面设置不同的处理程序,例如
自定义页面2.xaml.cs:
private void Button_Click(object sender, RoutedEventArgs e)
{
// some different code from CustomPage.xaml.cs
}
谢谢!
答案很简单:不要用这种方式处理事件。请改用绑定(尤其是在使用数据模板的情况下)。例如,对于Button
:
<Button Command="{Binding MyCommand}">
其中MyCommand
是来自数据上下文的ICommand
实现的实例。
如果您不熟悉WPF中的数据绑定,请从这里开始阅读。