我正在绑定TreeView。我的理由是树视图级别0是不可选择的。当我单击0级treeviewitem时,必须折叠当前项目并且必须选择第一个子项目。
├ Item 1 //<- level 0. this item must be unselectable
├─ Child Item 11 //<- level 1
├─ Child Item 12
├ Item 2 //<- level 0. When i click this item, that is automatically collapse
├─ Child Item 21
├─ Child Item 22
如何使用样式做到这一点?
答案 0 :(得分:7)
我会在我的视图模型中执行此操作。 0级项目的视图模型将具有:
public bool IsSelected
{
get { return false; }
set
{
// error checking is omitted
Children[0].IsSelected = value;
// let WPF know that IsSelected may have changed from what it's expecting
this.Dispatcher.BeginInvoke((ThreadStart)delegate
{
this.OnPropertyChanged(() => this.IsSelected);
});
}
}
你的XAML看起来像是:
<TreeView>
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
现在,只要用户点击第一级项目,VM就会拒绝被选中,而是选择第一个子项目。
您可以使用完全相同的技术来处理折叠级别的要求。