WPF XAML如何为datagrid编写触发器或多触发器?
1如果选择单元格,请将行背景设置为白色 及 2如果选择单元格且行背景为黄色,则不更改行背景 我为第一个条件编写了这段代码,但我不知道如何同时为第一个和第二个条件编写代码。也许我需要一个多触发器WPF XAML如何为datagrid编写触发器或多触发器?,wpf,xaml,datagrid,triggers,multitrigger,Wpf,Xaml,Datagrid,Triggers,Multitrigger,1如果选择单元格,请将行背景设置为白色 及 2如果选择单元格且行背景为黄色,则不更改行背景 我为第一个条件编写了这段代码,但我不知道如何同时为第一个和第二个条件编写代码。也许我需要一个多触发器 <DataGrid.Resources> <SolidColorBrush x:Key="{x:Static SystemColors.Highligh
<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
覆盖为透明
,选择单元格会隐藏单元格内容。所以,我想把前景设为黑色就足够了。这样你们就不必担心已经用背景黄来更新单元格的背景了。这是真的。这是一个细节,但我想找到解决这个问题的方法。添加了一个答案和解决方案。请查收。