我有一个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));
}
}
}
最佳答案
在您的XAML中,请尝试使用其他控件,例如<TreeViewItem>
,而不要在HierarchicalDataTemplate
下使用TextBlock
:
<TextBlock Text="{Binding Path=Header}"/>