Shi*_*mmy 4 wpf treeview xaml itemscontrol selection
是否有一个很好的方法(除了重新整理TreeViewItem.Template)以禁用选择TreeView?
我基本上寻找的ItemsControl风格TreeView(An ItemsControl是最好用'禁用'选择ListBox,阅读这篇文章)
小智 18
试试这个:
<Trigger Property="HasItems" Value="true">
<Setter Property="Focusable" Value="false" />
</Trigger>
Run Code Online (Sandbox Code Playgroud)
小智 6
基于当前接受的答案的链接,我在我的项目中实现了这一点:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
</Style>
</ListView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)
也适用于 TreeViewItem。在视图模型中:
protected bool _DisableSelection;
private bool _IsSelected;
public bool IsSelected
{
get { return _IsSelected; }
set
{
if (value == _IsSelected) return;
_IsSelected = _DisableSelection ? false : value;
NotifyPropertyChanged();
}
}
Run Code Online (Sandbox Code Playgroud)
现在你不必去打猎了!
这对我来说很有效(基于这个答案,但与项目无关 - 选择被禁用):
<TreeView>
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="Focusable" Value="False" />
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
Run Code Online (Sandbox Code Playgroud)
每当选择一个项目时,您都可以“取消选择”它。前任。修改http://www.codeproject.com/KB/WPF/TreeView_SelectionWPF.aspx中的代码或使用 MVVM 方法(请参阅http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx)并始终设置 IsSelected回到假。