如何在不使用ResourceDictionary Code-Behind的情况下处理来自ResourceDictionary的事件?

时间:2012-09-13 06:31:17

标签: c# wpf event-handling resourcedictionary

我想帮助解决如何在不使用ResourceDictionary Code-Behind(例如Styles.xaml.cs)的情况下处理ResourceDictionary(例如Styles.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
}

然而,它不起作用。有没有办法明确告诉我想要使用特定的事件处理程序来处理按钮的点击事件?另外,是否可以为每个页面使用不同的处理程序,例如

CustomPage2.xaml.cs:

private void Button_Click(object sender, RoutedEventArgs e)
{
   // some different code from CustomPage.xaml.cs
}

谢谢!

1 个答案:

答案 0 :(得分:2)

答案很简单:不要以这种方式处理事件。改为使用绑定(特别是,如果您使用的是数据模板)。例如,Button

<Button Command="{Binding MyCommand}">

其中MyCommand是来自您的数据上下文的ICommand实现的实例。

如果您不熟悉WPF中的数据绑定,请从here开始阅读。