WPF ListBox按钮所选项目
我有一个带有一些文本块和一个按钮的列表框 – 在按钮的代码后面,它调用一个传递当前所选列表框项的方法,这很有效。 问题是,当我选择一个项目,然后单击另一个项目上的按钮时,它不会更新“SelectedItem”属性 – 是否有一种方法Xaml或C#,我可以强制按钮单击以选择父ListBoxItem?
XAML
var curItem = ((ListBoxItem)myListBox.ContainerFromElement((Button)sender)).Content;
单击一个Button时,它会将e.Handled设置为true,从而导致路由事件遍历停止。
您可以向Button添加处理程序,再次引发路由事件,或者找到ListBoxItem类型的可视祖先,并将其IsSelected属性设置为true。
编辑
像这样的扩展方法:
public static DependencyObject FindVisualAncestor(this DependencyObject wpfObject, Predicate condition) { while (wpfObject != null) { if (condition(wpfObject)) { return wpfObject; } wpfObject = VisualTreeHelper.GetParent(wpfObject); } return null; }
用法:
myButton.FindVisualAncestor((o) => o.GetType() == typeof(ListBoxItem))