如何获取WPF控件中文本的默认颜色?我对前景色画笔进行数据绑定,只希望能够在一定条件下改变颜色。
一个简单的例子是当第二列的值为7时,将单元格着色为红色。如果我不知道文本的默认颜色,它与其他单元格略有不同。在下图中,默认画笔为蓝色。我使用Bushes.Black
作为非7值。
数据绑定行的C#代码是
public Brush brush
{
get
{
if (data2 == 7)
return Brushes.Red;
return Brushes.Black;
}
}
XAML代码如下。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<ListView Grid.Row="0" Grid.Column="0" Margin="10,20,10,10" ItemsSource="{Binding data}"
Name="DataList">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Width="150" DisplayMemberBinding="{Binding Path=data1}">
<GridViewColumn.Header>
<GridViewColumnHeader Tag="Data1">
<TextBlock>Data 1</TextBlock>
</GridViewColumnHeader>
</GridViewColumn.Header>
</GridViewColumn>
<GridViewColumn Width="150">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock x:Name="Txt2" Text="{Binding data2}" Foreground="{Binding brush}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
<GridViewColumn.Header>
<GridViewColumnHeader Tag="Data2">
<TextBlock>Data 2</TextBlock>
</GridViewColumnHeader>
</GridViewColumn.Header>
</GridViewColumn>
<GridViewColumn Width="150" DisplayMemberBinding="{Binding Path=data3}">
<GridViewColumn.Header>
<GridViewColumnHeader Tag="Data3">
<TextBlock>Data 3</TextBlock>
</GridViewColumnHeader>
</GridViewColumn.Header>
</GridViewColumn>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>
</Grid>
答案 0 :(得分:1)
只希望能够在特定条件下改变颜色
然后,您应该在应用于控件的样式中使用触发器,以便仅在&#34;特定条件&#34;下设置属性值。例如:
<GridViewColumn Width="150">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock x:Name="Txt2" Text="{Binding data2}">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding data2}" Value="7">
<Setter Property="Foreground" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
<TextBlock/>
</DataTemplate>
</GridViewColumn.CellTemplate>
<GridViewColumn.Header>
<GridViewColumnHeader Tag="Data2">
<TextBlock>Data 2</TextBlock>
</GridViewColumnHeader>
</GridViewColumn.Header>
</GridViewColumn>
或者,使用转换器绑定到属性,并在不想修改默认值时返回Binding.DoNothing。在处理更复杂的场景时,转换器非常有用。鉴于到目前为止您的问题中的信息,上述情况应该可以正常工作。