5

我有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));
        }
    }
}
4

2 回答 2

12

在您的 XAML 中,尝试使用另一个控件,而不是在<TreeViewItem>下使用 a HierarchicalDataTemplate,例如TextBlock

<TextBlock Text="{Binding Path=Header}"/>
于 2013-02-14T14:57:45.707 回答
-1

先前的解决方案避免了该问题。有一种使用 header 来选择 a 的方法TreeViewItem:在 MSDN 网站上,我们可以找到一个使用 header 的示例,并且在哪里TreeViewItem可以点击。有人知道为什么这里不可能吗?

我个人破解了使用然后MouseButtonEventHandler添加foreach项目的方法,但这很脏。isSelected = false;((TreeViewItem)sender).IsSelected = true;

于 2013-07-02T07:48:52.107 回答