Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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# 如何从codebehind更改DataTemplate中的字体颜色?_C#_Xaml_Datatemplate - Fatal编程技术网

C# 如何从codebehind更改DataTemplate中的字体颜色?

C# 如何从codebehind更改DataTemplate中的字体颜色?,c#,xaml,datatemplate,C#,Xaml,Datatemplate,我有一个像这样的XAML数据模板应用于ListBoxItems。请注意底部附近的网格。我想做的是根据文本的值更改绑定文本的颜色,如“Status:ERROR”中的“ERROR”为红色 <DataTemplate x:Key="ItemTemplate"> <Border BorderBrush="Gray" BorderThickness="1"> <Grid> <Grid.RowDefinitions&g

我有一个像这样的XAML数据模板应用于ListBoxItems。请注意底部附近的网格。我想做的是根据文本的值更改绑定文本的颜色,如“Status:ERROR”中的“ERROR”为红色

<DataTemplate x:Key="ItemTemplate">
    <Border BorderBrush="Gray" BorderThickness="1">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="3*"/>
                <RowDefinition Height="*"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <Rectangle Grid.Row="0" Grid.Column="0">
                <Rectangle.Fill>
                    <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                        <GradientStop Color="#FFA9A9A9" Offset="1.0"/>
                        <GradientStop Color="#FFF4F4F5" Offset="0.0"/>
                    </LinearGradientBrush>
                </Rectangle.Fill>
            </Rectangle>
            <Label Content="{Binding Name}" FontSize="22" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center"/>
            <Rectangle Grid.Row="1" Grid.Column="0"  Grid.RowSpan="3">
                <Rectangle.Fill>
                    <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1">
                        <GradientStop Color="#FFF0F0F1" Offset="1.0"/>
                        <GradientStop Color="#FFF4F4F5" Offset="0.0"/>
                    </LinearGradientBrush>
                </Rectangle.Fill>
            </Rectangle>
            <Grid Grid.Row="1" Grid.Column="0">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="2*"/>
                </Grid.ColumnDefinitions>
                <Label Content="Status:"/>
                <Label Content="{Binding Status}" Grid.Column="1"/>
            </Grid>
            <Label Content="{Binding Bookmark}" ContentStringFormat="Last Bookmark: {0}" Grid.Row="3" Grid.Column="0"/>
        </Grid>
    </Border>
</DataTemplate>

如何从代码隐藏(C#)更改处于绑定状态的文本的颜色


(或者,如果不是来自代码隐藏,那么XAML?状态中的how in可以有3个文本值(排队、运行和错误),并且每个文本值都与指定的颜色(蓝色、绿色和红色)匹配。)

基于@SLaks提示,我能够得出完整的答案。这是给其他人的:

这:

<Grid Grid.Row="1" Grid.Column="0">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="2*"/>
    </Grid.ColumnDefinitions>
    <Label Content="Status:"/>
    <Label Content="{Binding Status}" Grid.Column="1"/>
</Grid>

变成这样:

<Grid Grid.Row="1" Grid.Column="0">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="2*"/>
    </Grid.ColumnDefinitions>
    <Label Content="Status:"/>
    <Label Content="{Binding Status}" Grid.Column="1">
        <Label.Style>
            <Style TargetType="Label">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Status}" Value="RUNNING">
                        <Setter Property="Label.Foreground" Value="Green"></Setter>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding Status}" Value="ERROR">
                        <Setter Property="Label.Foreground" Value="Red"></Setter>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding Status}" Value="QUEUED">
                        <Setter Property="Label.Foreground" Value="Blue"></Setter>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Label.Style>
    </Label>
</Grid>

使用