Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.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
C# 是否可以将RowDefinition资源设置为该行中所有文本块的样式?_C#_Wpf - Fatal编程技术网

C# 是否可以将RowDefinition资源设置为该行中所有文本块的样式?

C# 是否可以将RowDefinition资源设置为该行中所有文本块的样式?,c#,wpf,C#,Wpf,我有一个包含许多文本块的网格。 我想根据相关ViewModel中的布尔值更改每个文本块的前景。 一行中的每个TextBlock都使用来自VM的相同绑定进行更改,因此我认为一个好方法是在GridRow上设置一个带有数据触发器的样式 我尝试使用以下方法: <Grid.RowDefinitions> <RowDefinition Height="Auto"> <RowDefinit

我有一个包含许多文本块的网格。 我想根据相关ViewModel中的布尔值更改每个文本块的前景。 一行中的每个TextBlock都使用来自VM的相同绑定进行更改,因此我认为一个好方法是在GridRow上设置一个带有数据触发器的样式

我尝试使用以下方法:

<Grid.RowDefinitions>
                <RowDefinition Height="Auto">
                    <RowDefinition.Resources>
                        <Style TargetType="{x:Type TextBlock}">
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding TempWarning}" Value="True">
                                    <Setter Property="Foreground" Value="White"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </RowDefinition.Resources>
                </RowDefinition>

然后我像这样声明TextBlock:

<TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding CurrentTemp}" HorizontalAlignment="Right" Margin="5,0"/>

但是,即使TempWarning值设置为true,TextBlock前景也不会更新


有人能提出原因吗?

您应该将
样式移动到


非常感谢,这正是我所需要的。如果我需要为每一行涂上颜色,我该怎么做呢?它们都将是白色的,但每一行将绑定到不同的警告。这是唯一的区别。在不同的源属性中有不同的警告吗?您需要为每行创建一个样式。是的,此行中的绑定会有所不同:因此TempWarning将是TempWarning1(不是实际值,只是示例),Grid.row的值将是1。我尝试创建多个样式,但似乎无法为同一TargetType添加多个样式。您可以向同一个
样式添加多个
MultiDataTriggers
<Grid>
    <Grid.Resources>
        <Style TargetType="{x:Type TextBlock}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding TempWarning}" Value="True">
                    <Setter Property="Foreground" Value="White"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Grid.Resources>
    <Grid.RowDefinitions>
        ...
    </Grid.RowDefinitions>
    ...
</Grid>
<Style TargetType="{x:Type TextBlock}">
    <Style.Triggers>
        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Binding="{Binding TempWarning}" Value="True" />
                <Condition Binding="{Binding Path=(Grid.Row),
                    RelativeSource={RelativeSource Self}}" Value="0" />
            </MultiDataTrigger.Conditions>
            <Setter Property="Foreground" Value="White"/>
        </MultiDataTrigger>
    </Style.Triggers>
</Style>