【发布时间】:2011-01-21 15:27:30
【问题描述】:
我该如何做才能在 TreeView 中展开/折叠组,只需单击文本,而不是单击左侧的箭头。
【问题讨论】:
标签: wpf treeview wpf-controls treeviewitem
我该如何做才能在 TreeView 中展开/折叠组,只需单击文本,而不是单击左侧的箭头。
【问题讨论】:
标签: wpf treeview wpf-controls treeviewitem
您应该使用下一个 setter 为您的树项创建样式:
<Style x:Key="TreeItemStyle"
TargetType="{x:Type TreeViewItem}">
<Setter Property="IsExpanded"
Value="{Binding Path=IsExpanded, Mode=TwoWay}"/>
</Style>
然后将名为 IsExpanded 的组视图数据类可观察属性添加到您:
private bool _isExpanded;
public bool IsExpanded
{
get
{
return this._isExpanded;
}
set
{
if (this._isExpanded != value)
{
this._isExpanded = value;
this.OnPropertyChanged("IsExpanded");
}
}
}
然后拦截超链接点击事件并将IsExpanded设置为true:
private void Hyperlink_Click(object sender, RoutedEventArgs e)
{
var dc = ((Hyperlink)sender).DataContext;
if (dc is GroupViewData)
{
((GroupViewData)dc).IsExpanded = true;
}
}
当然,最好的方法是使用命令而不是点击处理程序,但我不知道您的演示模型的组成,因此无法提供适当的解决方案。我只是必须说,在我们的项目中,我们有类似的需求,我们成功地避免了任何隐藏的视图代码。上帝保佑 WPF!
【讨论】: