我有一个ListBox,它具有为ListBoxItems定义的样式.在这种风格中,我有一些标签和一个按钮.一个按钮,我想定义一个可以在我的页面(或任何使用该样式的页面)上处理的点击事件.如何在我的WPF页面上创建一个事件处理程序来处理我的ListBoxItems样式的事件?
这是我的风格(仅受影响的代码):
谢谢!
看看RoutedCommand.
在myclass中的某个地方定义你的命令,如下所示:
public static readonly RoutedCommand Login = new RoutedCommand();
现在使用此命令定义您的按钮:
您可以使用CommandParameter获取额外信息.
现在最后但并非最不重要的是,开始听你的命令:
在这个类的构造函数中,你希望做一些不错的东西,你放置:
CommandBindings.Add(new CommandBinding(myclass.Login, ExecuteLogin));
或者在XAML中:
并实现CommandBinding所需的委托:
private void ExecuteLogin(object sender, ExecutedRoutedEventArgs e) { //Your code goes here... e has your parameter! }
您可以在可视树中的任何地方开始收听此命令!
希望这可以帮助
PS你也可以使用CanExecute委托定义CommandBinding,如果CanExecute这样说,它甚至会禁用你的命令:)
PPS这是另一个例子:WPF中的RoutedCommands
正如Arcturus发布的那样,RoutedCommands是实现这一目标的好方法.但是,如果DataTemplate中只有一个按钮,那么这可能会更简单一些:
您实际上可以从主机ListBox处理任何按钮的Click事件,如下所示:
ListBox中包含的任何按钮都会在单击它们时触发该事件.在事件处理程序中,您可以使用e.OriginalSource获取对单击按钮的引用.
显然,如果你的ListBoxItems有多个按钮,这太简单了,但在很多情况下它工作得很好.