我正在开发一个wpf应用程序来显示记录,我需要更改特定列中的文本样式" Price"如果它小于50.代码如下:
$keys[j - 1]
所以我需要改变价格文本的前景色,如果它是< 50。
你能建议怎么做吗?
答案 0 :(得分:2)
你不能在XAML中进行这种比较,因为没有<运营商已定义,但您可以使用转换器:
<DataGrid ItemsSource="{Binding Path= Shares}" HorizontalAlignment="Left" Margin="89,201,0,0" CanUserAddRows="False" AutoGenerateColumns="False"
VerticalAlignment="Top" Height="280" Width="500"
xmlns:local="clr-namespace:WpfApplication1">
<DataGrid.Resources>
<local:MyConverter x:Key="conv" />
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Header="Company" Binding="{Binding CompanyName}" Width="250" />
<DataGridTextColumn Header="Share Price" Binding="{Binding Price}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding Price, Converter={StaticResource conv}}" Value="True">
<Setter Property="Foreground" Value="Green" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
namespace WpfApplication1
{
public class MyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
decimal d = System.Convert.ToDecimal(value);
return d < 50;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
}
如果Price属性为&lt;属性,则Convert方法返回true。 50然后TextBlock的前景变为绿色。