【问题标题】:c# WPF Tree View Item conditional stylingc# WPF Treeview Item条件样式
【发布时间】:2015-06-16 10:47:46
【问题描述】:

你如何有条件地设置treeviewitemson 绑定属性的样式

我遇到了一个问题,我想在树视图中设置项目的样式,这些项目是有效的选择与层次结构项目。

我尝试将我的style 标记移动到TreeView.ResourcesTreeView.ItemContainerStyle 标记中,但它仍然不会导致任何格式。

<TabItem Name="Queries" Header="Queries" 
         d:DataContext="{d:DesignInstance views:QuerySettingsView}">
  <Grid>
    <TreeView ItemsSource="{Binding QueryTreeModels}" 
              Width="500" Height="200" VerticalAlignment="Top" 
              HorizontalAlignment="Center" Margin="0,0,175,0">
      <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Children}">
          <HierarchicalDataTemplate.ItemContainerStyle>
            <Style >
              <Setter Property="TreeViewItem.IsExpanded" 
                      Value="{Binding IsExpanded, Mode=TwoWay}" />
              <Setter Property="TreeViewItem.IsSelected" 
                      Value="{Binding IsSelected, Mode=TwoWay}" />
              <Style.Triggers>
                <DataTrigger Binding="{Binding IsQuery}">
                  <Setter Property="TextBlock.Foreground" Value="Chartreuse" />
               </DataTrigger>
               <DataTrigger Binding="{Binding IsFolder}">
                 <Setter Property="TextBlock.Foreground" Value="Crimson" />
               </DataTrigger>
             </Style.Triggers>
           </Style>
         </HierarchicalDataTemplate.ItemContainerStyle>
         <TextBlock Text="{Binding Name}"/>
       </HierarchicalDataTemplate>
     </TreeView.ItemTemplate>
   </TreeView>
 </Grid>
</TabItem>

【问题讨论】:

  • 欢迎来到 Stack Overflow!请明确说明您想要完成的任务。
  • 为了可读性和清晰度而格式化。
  • @Kjartan 感谢更新我的问题
  • @Drakes 感谢您的反馈

标签: c# wpf treeview styles conditional


【解决方案1】:

对于 DataTrigger,您需要通过向 DataTrigger 绑定字段添加值来完成条件。比如&lt;DataTrigger Binding="{Binding IsQuery}" Value="true"&gt;参考下面的代码。

<TreeView x:Name="tree" Width="500" Height="200"
          VerticalAlignment="Top" HorizontalAlignment="Center"
          >
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Children}">
                <HierarchicalDataTemplate.ItemContainerStyle>                       
                    <Style >
                        <Setter Property="TreeViewItem.IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
                        <Setter Property="TreeViewItem.IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" />
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding IsQuery}" Value="true">
                                <Setter Property="TreeViewItem.Foreground" Value="Chartreuse" />
                            </DataTrigger>
                            <DataTrigger Binding="{Binding IsFolder}" Value="true">
                                <Setter Property="TreeViewItem.Foreground" Value="Crimson" />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </HierarchicalDataTemplate.ItemContainerStyle>
                <TextBlock Text="{Binding NodeName}"/>
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>

【讨论】:

  • 非常感谢您的快速回答。现在按预期工作:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-15
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多