IDE:VS2017
以前在WinForm的時候,如果想要判斷某數值,而改變Text的顏色,通常是跑Foreach來判斷。
而如果想要在Wpf的Xaml上,判斷某數值而產生顏色的變化,可以用IValueConverter來做
新增一個類別
public class ColorConvert : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var input = (int)value;
if (input > 25)
return Brushes.Red;
else
return Brushes.Black;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
相關設定
xmlns:color="clr-namespace:Test.Converts"
<UserControl.Resources>
<color:ColorConvert x:Key="colorConvert" />
</UserControl.Resources>
<Textbox Text="{Binding Age}" Foreground="{Binding Age,Converter={StaticResource colorConvert}}"></Textbox >
就會發現,改變Text的時候,顏色就會自己變化囉。
如果是DataGrid的時候,又該如何使用呢??
<DataGrid ItemsSource="{Binding TestList}" CanUserAddRows="False" AutoGenerateColumns="False" Style="{x:Null}">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}" />
<DataGridTextColumn Header="Age" Binding="{Binding Age}">
<DataGridTextColumn.ElementStyle>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground"
Value="{Binding Age, Converter={StaticResource colorConvert}}" />
</Style>
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
很簡單吧!!
留言列表