Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF XAML如何为datagrid编写触发器或多触发器?_Wpf_Xaml_Datagrid_Triggers_Multitrigger - Fatal编程技术网

WPF XAML如何为datagrid编写触发器或多触发器?

WPF XAML如何为datagrid编写触发器或多触发器?,wpf,xaml,datagrid,triggers,multitrigger,Wpf,Xaml,Datagrid,Triggers,Multitrigger,1如果选择单元格,请将行背景设置为白色 及 2如果选择单元格且行背景为黄色,则不更改行背景 我为第一个条件编写了这段代码,但我不知道如何同时为第一个和第二个条件编写代码。也许我需要一个多触发器 <DataGrid.Resources> <SolidColorBrush x:Key="{x:Static SystemColors.Highligh

1如果选择单元格,请将行背景设置为白色

2如果选择单元格且行背景为黄色,则不更改行背景

我为第一个条件编写了这段代码,但我不知道如何同时为第一个和第二个条件编写代码。也许我需要一个多触发器

                                <DataGrid.Resources>
                                    <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>
                                        <Style TargetType="DataGridCell">
                                            <Style.Triggers>
                                                <Trigger Property="IsSelected"
                                                            Value="True">
                                                    <Setter Property="Background"
                                                            Value="White" />
                                                    <Setter Property="Foreground"
                                                            Value="Black" />
                                                </Trigger>
                                            </Style.Triggers>
                                        </Style>

                                </DataGrid.Resources>


我猜您正在将背景设置为
白色
,因为您已将
HighlightBrushKey
覆盖为透明,选择单元格会隐藏单元格内容。所以,我想把前景设为黑色就足够了。这样你们就不必担心并没有用背景黄来更新单元格的背景了


但是,不管您多么想这样做,您可以使用single
MultiDataTrigger
这样做,您需要检查dataGridRow的背景是否为黄色,然后什么也不做。但由于您希望这样做,除非背景是黄色,用于查看背景是否不是黄色

<local:MyConverter x:Key="MyConverter"/>
//Declare local namespace with converter namespace in XAML

<Style TargetType="DataGridCell">
  <Setter Property="Foreground" Value="Black" />
  <Style.Triggers>
     <MultiDataTrigger>
       <MultiDataTrigger.Conditions>
          <Condition Binding="{Binding IsSelected,
                     RelativeSource={RelativeSource Self}}" Value="True"/>
          <Condition Binding="{Binding Background,
                     RelativeSource={RelativeSource Mode=FindAncestor, 
                                        AncestorType=DataGridRow},
                     Converter={StaticResource MyConverter}}"
                     Value="False"/>
        </MultiDataTrigger.Conditions>
        <Setter Property="Background" Value="White" />
      </MultiDataTrigger>
   </Style.Triggers>
</Style>

我猜您正在将背景设置为
白色
,因为您已将
HighlightBrushKey
覆盖为透明,并且选择单元格会隐藏单元格内容。所以,我想把前景设为黑色就足够了。这样你们就不必担心并没有用背景黄来更新单元格的背景了


但是,不管您多么想这样做,您可以使用single
MultiDataTrigger
这样做,您需要检查dataGridRow的背景是否为黄色,然后什么也不做。但由于您希望这样做,除非背景是黄色,用于查看背景是否不是黄色

<local:MyConverter x:Key="MyConverter"/>
//Declare local namespace with converter namespace in XAML

<Style TargetType="DataGridCell">
  <Setter Property="Foreground" Value="Black" />
  <Style.Triggers>
     <MultiDataTrigger>
       <MultiDataTrigger.Conditions>
          <Condition Binding="{Binding IsSelected,
                     RelativeSource={RelativeSource Self}}" Value="True"/>
          <Condition Binding="{Binding Background,
                     RelativeSource={RelativeSource Mode=FindAncestor, 
                                        AncestorType=DataGridRow},
                     Converter={StaticResource MyConverter}}"
                     Value="False"/>
        </MultiDataTrigger.Conditions>
        <Setter Property="Background" Value="White" />
      </MultiDataTrigger>
   </Style.Triggers>
</Style>

我猜您正在将背景设置为
白色
,因为您已将
HighlightBrushKey
覆盖为透明,并且选择单元格会隐藏单元格内容。所以,我想把前景设为黑色就足够了。这样你们就不必担心并没有用背景黄来更新单元格的背景了


但是,不管您多么想这样做,您可以使用single
MultiDataTrigger
这样做,您需要检查dataGridRow的背景是否为黄色,然后什么也不做。但由于您希望这样做,除非背景是黄色,用于查看背景是否不是黄色

<local:MyConverter x:Key="MyConverter"/>
//Declare local namespace with converter namespace in XAML

<Style TargetType="DataGridCell">
  <Setter Property="Foreground" Value="Black" />
  <Style.Triggers>
     <MultiDataTrigger>
       <MultiDataTrigger.Conditions>
          <Condition Binding="{Binding IsSelected,
                     RelativeSource={RelativeSource Self}}" Value="True"/>
          <Condition Binding="{Binding Background,
                     RelativeSource={RelativeSource Mode=FindAncestor, 
                                        AncestorType=DataGridRow},
                     Converter={StaticResource MyConverter}}"
                     Value="False"/>
        </MultiDataTrigger.Conditions>
        <Setter Property="Background" Value="White" />
      </MultiDataTrigger>
   </Style.Triggers>
</Style>

我猜您正在将背景设置为
白色
,因为您已将
HighlightBrushKey
覆盖为透明,并且选择单元格会隐藏单元格内容。所以,我想把前景设为黑色就足够了。这样你们就不必担心并没有用背景黄来更新单元格的背景了


但是,不管您多么想这样做,您可以使用single
MultiDataTrigger
这样做,您需要检查dataGridRow的背景是否为黄色,然后什么也不做。但由于您希望这样做,除非背景是黄色,用于查看背景是否不是黄色

<local:MyConverter x:Key="MyConverter"/>
//Declare local namespace with converter namespace in XAML

<Style TargetType="DataGridCell">
  <Setter Property="Foreground" Value="Black" />
  <Style.Triggers>
     <MultiDataTrigger>
       <MultiDataTrigger.Conditions>
          <Condition Binding="{Binding IsSelected,
                     RelativeSource={RelativeSource Self}}" Value="True"/>
          <Condition Binding="{Binding Background,
                     RelativeSource={RelativeSource Mode=FindAncestor, 
                                        AncestorType=DataGridRow},
                     Converter={StaticResource MyConverter}}"
                     Value="False"/>
        </MultiDataTrigger.Conditions>
        <Setter Property="Background" Value="White" />
      </MultiDataTrigger>
   </Style.Triggers>
</Style>

我猜您正在将background设置为
白色
,因为您已将
HighlightBrushKey
覆盖为
透明
,选择cell将隐藏单元格内容。所以,我想把前景设为黑色就足够了。这样你们就不必担心已经用背景黄来更新单元格的背景了。这是真的。这是一个细节,但我想找到解决这个问题的方法。添加了一个答案和解决方案。请检查。我猜您正在将Background设置为
白色
,因为您已将
HighlightBrushKey
覆盖为
透明
,选择单元格会隐藏单元格内容。所以,我想把前景设为黑色就足够了。这样你们就不必担心已经用背景黄来更新单元格的背景了。这是真的。这是一个细节,但我想找到解决这个问题的方法。添加了一个答案和解决方案。请检查。我猜您正在将Background设置为
白色
,因为您已将
HighlightBrushKey
覆盖为
透明
,选择单元格会隐藏单元格内容。所以,我想把前景设为黑色就足够了。这样你们就不必担心已经用背景黄来更新单元格的背景了。这是真的。这是一个细节,但我想找到解决这个问题的方法。添加了一个答案和解决方案。请检查。我猜您正在将Background设置为
白色
,因为您已将
HighlightBrushKey
覆盖为
透明
,选择单元格会隐藏单元格内容。所以,我想把前景设为黑色就足够了。这样你们就不必担心已经用背景黄来更新单元格的背景了。这是真的。这是一个细节,但我想找到解决这个问题的方法。添加了一个答案和解决方案。请查收。