我有TreeView
HierarchicalDataTemplate
。这些项目已正确填写,但我无法点击TreeView
项目。 (我不能选择一个,所以标记为蓝色)。
我可以点击TreeViewItem
前面,然后选中的标记为蓝色。看起来我可以点击一个小盒子,但不是其余的。
这是我的代码:
XAML:
<TreeView ItemsSource="{Binding Main.TreeItems}">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=Children}">
<TreeViewItem Header="{Binding Path=Header}"/>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
模型
public class ITreeItem
{
public string Header { get; set; }
public List<ITreeItem> Children { get; set; }
}
class MainModel : INotifyPropertyChanged
{
private List<ITreeItem> _treeitems;
public MainModel()
{
_treeitems = new List<ITreeItem>();
List<ITreeItem> treeList = new List<ITreeItem>();
ITreeItem myItem1 = new ITreeItem();
myItem1.Header = "Test1";
myItem1.Children = new List<ITreeItem>();
treeList.Add(myItem1);
myItem1.Header = "Test2";
myItem1.Children = new List<ITreeItem>();
treeList.Add(myItem1);
TreeItems = treeList;
}
public List<ITreeItem> TreeItems
{
get
{
return _treeitems;
}
set
{
_treeitems = value;
OnPropertyChanged("TreeItems");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
答案 0 :(得分:10)
在您的XAML中,不要使用<TreeViewItem>
下的HierarchicalDataTemplate
,而是尝试使用其他控件,例如TextBlock
:
<TextBlock Text="{Binding Path=Header}"/>
答案 1 :(得分:-1)
之前的解决方案避免了这个问题。有一种方法可以使用标头在MSDN网站we can find an example上选择TreeViewItem
:使用标头,其中TreeViewItem
可以点击。有人知道为什么在这里不可能吗?
我个人使用MouseButtonEventHandler
在foreach
然后isSelected = false;
的项目上添加((TreeViewItem)sender).IsSelected = true;
,但这很脏。