【问题标题】:WPF TreeView selection over entire HierarchyItem整个 HierarchyItem 上的 WPF TreeView 选择
【发布时间】:2013-01-22 14:50:55
【问题描述】:

我有一个绑定到 MVVM 可观察集合的 TreeView。 我的项目模板由图像和文本块组成,如下代码所示:

<HierarchicalDataTemplate x:Key="TreeViewItemTemplate" ItemsSource="{Binding Items, Mode=OneWay, NotifyOnSourceUpdated=True}">
    <TreeViewItem>
        <TreeViewItem.Header>
            <StackPanel Orientation="Horizontal">
                <Image 
                    Margin="-20,0,5,0"
                    Source="{Binding Icon, Converter={StaticResource TreeViewIconConverter}, Mode=OneWay}" 
                    Style="{DynamicResource SmallIcon}"/>
                <Label Content="{Binding Label}"/>
            </StackPanel>
        </TreeViewItem.Header>
    </TreeViewItem>
</HierarchicalDataTemplate>

当您单击某个项目时会出现问题。如果鼠标光标位于 StackPanel 上,则不会进行选择。 我还包括了一个屏幕截图,以使这一点更清楚。

当然,这是因为 StackPanel 现在选择区域上方。

有什么解决办法吗?

【问题讨论】:

    标签: wpf treeview


    【解决方案1】:

    我自己找到了答案。 当您使用 分层数据模板 自定义 TreeView 时,您不应复制 TreeViewItem.Header 模板,因为在运行时 WPF 会为您创建一个。 所以,为了有一个自定义的 TreeViewItem 这个代码就足够了:

    <HierarchicalDataTemplate x:Key="TreeViewItemTemplate" ItemsSource="{Binding Items, Mode=OneWay, NotifyOnSourceUpdated=True}">
        <StackPanel Orientation="Horizontal">
            <Image 
                Margin="0,0,5,0"
                Source="{Binding Icon, Converter={StaticResource TreeViewIconConverter}, Mode=OneWay}" 
                Style="{DynamicResource SmallIcon}"/>
            <Label Content="{Binding Label}"/>
        </StackPanel>
    </HierarchicalDataTemplate>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-23
      • 2011-07-19
      • 1970-01-01
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 2011-06-05
      • 1970-01-01
      相关资源
      最近更新 更多