【问题标题】:Mixing a Data Trigger with a Regular Trigger in an Items Control在项控件中混合使用数据触发器和常规触发器
【发布时间】:2018-05-14 09:11:30
【问题描述】:

我为我的 ItemsControl 设置了一个完美的触发器:

<DataTemplate.Triggers>
    <Trigger Property="ItemsControl.AlternationIndex" Value="1">
       <Setter Property="Background" Value="LightGray"  TargetName="Foobar"></Setter>
    </Trigger>
</DataTemplate.Triggers>

我的问题是,有时我必须在列表中插入“特殊行”。

我使用以下触发器来操作模板中的控件:

<Style TargetType="TextBlock">
   <Style.Triggers>
       <DataTrigger Binding="{Binding isHeaderLine}" Value="true">
          <Setter Property="Visibility" Value="Visible"/>
       </DataTrigger>
   </Style.Triggers>
</Style>

这个效果很好,我得到了我想要显示的东西。

现在,我的问题是我想合并它们,这样无论 AlternationIndex 中的数字是多少,特殊行都会得到白色背景。

这个可以吗?

完整代码如下:

<ItemsControl  Margin="0 0 0 30" Name="CtrlOrderDetails" AlternationCount="2">
   <ItemsControl.ItemTemplate>
      <DataTemplate>
         <Grid x:Name="Foobar">
            <TextBlock Text="{Binding ProdcutName}"  Margin="0 5 0 5" FontSize="16">
               <TextBlock.Style>
                   <Style TargetType="TextBlock">
                      <Style.Triggers>
                         <DataTrigger Binding="{Binding isHeaderLine}" Value="true">
                           <Setter Property="Visibility" Value="Collapsed"/>
                         </DataTrigger>
                      </Style.Triggers>
                   </Style>
               </TextBlock.Style>
           </TextBlock>
           <TextBlock Text="{Binding headerText}">
              <TextBlock.Style>
                 <Style TargetType="TextBlock">
                    <Setter Property="FontWeight" Value="Bold"></Setter>
                    <Setter Property="FontSize" Value="16"></Setter>
                    <Setter Property="Foreground" Value="Blue"></Setter>
                    <Setter Property="Visibility" Value="Collapsed"/>
                    <Setter Property="Margin" Value="0 10 0 5 "/>
                    <Style.Triggers>
                       <DataTrigger Binding="{Binding isHeaderLine}" Value="true">
                          <Setter Property="Visibility" Value="Visible"/>
                       </DataTrigger>
                    </Style.Triggers>
                 </Style>
             </TextBlock.Style>
           </TextBlock>
       </Grid>
       <DataTemplate.Triggers>
          <Trigger Property="ItemsControl.AlternationIndex" Value="1">
             <Setter Property="Background" Value="LightGray"  TargetName="Foobar"></Setter>
          </Trigger>
       </DataTemplate.Triggers>
    </DataTemplate>
  </ItemsControl.ItemTemplate>
<ItemsControl>

【问题讨论】:

    标签: wpf itemscontrol datatrigger multidatatrigger


    【解决方案1】:

    尝试在 DataTemplate 中使用来自 Style 的相同 DataTrigger,但使用背景设置器

    <DataTemplate.Triggers>
      <Trigger Property="ItemsControl.AlternationIndex" Value="1">
         <Setter Property="Background" Value="LightGray" TargetName="Foobar"/>
      </Trigger>
    
     <DataTrigger Binding="{Binding isHeaderLine}" Value="true">
         <Setter Property="Background" Value="White" TargetName="Foobar"/>
     </DataTrigger>
    </DataTemplate.Triggers>
    

    【讨论】:

    猜你喜欢
    • 2013-02-21
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    相关资源
    最近更新 更多