当 TreeViewItem 属性 IsExpanded 更改时,XAML 中是否有方法调用函数?
我相信不太好的替代方案是循环遍历所有 TreeViewItems 并执行 item.IsExpanded += 处理程序调用(如果我理解正确的话)。
或者我可以检查我猜的扩展器元素上的点击情况。
我正在做的是保持树的展开/折叠状态。请回答第一个问题,然后再建议其他方法来坚持这一点,只是为了启发我了解属性和 xaml。
最佳答案
基于 Joel 的答案,您可以在 TreeViewItem Style
中使用 EventSetter
来引用代码隐藏中的事件处理程序:
<TreeView ... >
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem" >
<EventSetter Event="TreeViewItem.Expanded" Handler="OnTreeExpanded" />
<EventSetter Event="TreeViewItem.Collapsed" Handler="OnTreeCollapsed" />
</Style>
</TreeView.ItemContainerStyle>
...
代码隐藏 - 普通事件处理程序:
private void OnTreeExpanded(object sender, RoutedEventArgs e)
{
var tvi = (TreeViewItem)sender;
...
e.Handled = true;
}
private void OnTreeCollapsed(object sender, RoutedEventArgs e)
{
var tvi = (TreeViewItem)sender;
...
e.Handled = true;
}
注意:确保在事件处理程序中设置e.Handled = true
,否则您也会从当前 TreeViewItem 的所有父项获取事件。
关于wpf TreeView - 如何在 IsExpanded 属性更改上调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15973162/