【问题标题】:Automatically selecting a TreeViewItem if a TextBox in data template gets focus (not using code)如果数据模板中的 TextBox 获得焦点,则自动选择 TreeViewItem(不使用代码)
【发布时间】:2012-07-06 01:21:54
【问题描述】:

我有一个 2 级 TreeView。 Level-2 TreeViewItems 通过数据模板包含 TextBox 控件。

我想要什么:如果 TextBox 控件获得焦点,则选择相应的 TreeViewItem。 我做了一些研究,发现了这一点:

<Style TargetType="ListViewItem">
<Style.Triggers>
    <Trigger Property="IsKeyboardFocusWithin" Value="true">
        <Setter Property="IsSelected" Value="true" />
    </Trigger>
</Style.Triggers>

Link

如果我用 TreeViewItem 替换 ListViewItem,这几乎可以完美运行。

但是:第一个子项总是选择它的父项而不是自己。 (其他子项按预期工作)。

原来如此

<TreeView>
<TreeViewItem>
  <TreeViewItem>  <-- this doesn't work
  <TreeViewItem>  <-- this works
</TreeViewItem>
<TreeViewItem>
  <TreeViewItem>  <-- this doesn't work
  <TreeViewItem>  <-- this works
  <TreeViewItem>  <-- this works
</TreeViewItem>
<TreeViewItem>
  <TreeViewItem>  <-- this doesn't work
  <TreeViewItem>  <-- this works
  <TreeViewItem>  <-- this works
</TreeViewItem>
...
</TreeView>

任何想法我做错了什么或如何解决这个问题?

【问题讨论】:

    标签: c# wpf xaml triggers treeview


    【解决方案1】:

    我找到了解决方案。事实证明,该问题也是由应用于 1 级 TreeViewItems 的样式引起的(这些仅包含一个 TextBlock)。因此,如果我将样式更改为

                <Style TargetType="{x:Type TreeViewItem}">
                    <Style.Triggers>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsKeyboardFocusWithin" Value="True"></Condition>
                                <Condition Property="HasItems" Value="False"></Condition>
                            </MultiTrigger.Conditions>
                            <MultiTrigger.Setters>
                                <Setter Property="IsSelected" Value="True"></Setter>
                            </MultiTrigger.Setters>
                        </MultiTrigger>
                    </Style.Triggers>
                </Style>
    

    并将此样式设置为&lt;TreeView.ItemContainerStyle&gt;,一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-15
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      • 2013-09-21
      相关资源
      最近更新 更多