DataTemplate 中的事件处理程序 [英] Event handler in DataTemplate
问题描述
我在数据模板中有 WPF 组合框(列表框中有很多组合框),我想处理输入按钮.如果它是例如,那将很容易.一个按钮 - 我会使用命令 + 相对绑定路径等.不幸的是,我不知道如何使用命令处理按键或如何从模板设置事件处理程序.有什么建议吗?
I have WPF ComboBox inside a data template (a lot of comboboxes in listbox) and I want to handle enter button. It would be easy if it was e.g. a button - I would use Command + Relative binding path etc. Unfortunately, I have no idea how handle key press with a Command or how to set event handler from template. Any suggestions?
推荐答案
我已经通过使用通常的事件处理程序解决了我的问题,我在可视化树中遍历,找到相应的按钮并调用它的命令.如果其他人有同样的问题,请发表评论,我会提供更多的实现细节.
I've solved my problem by using a usual event handler where I walk through the visual tree, find corresponding button and call it's command. If anybody else has the same problem, please post a comment and I'll provide more details of realization.
UPD
这是我的解决方案:
我在可视化树中搜索按钮,然后执行与按钮关联的命令.
I search the visual tree for a button and than execute command associated with button.
View.xaml:
<ComboBox KeyDown="ComboBox_KeyDown"/>
<Button Command="{Binding AddResourceCommand}"/>
View.xaml.cs:
View.xaml.cs:
private void ComboBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
var parent = VisualTreeHelper.GetParent((DependencyObject)sender);
int childrenCount = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < childrenCount; i++)
{
var child = VisualTreeHelper.GetChild(parent, i) as Button;
if (null != child)
{
child.Command.Execute(null);
}
}
}
}
这篇关于DataTemplate 中的事件处理程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!