close

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>

很簡單吧!!

arrow
arrow
    全站熱搜

    軒軒的爸媽 發表在 痞客邦 留言(0) 人氣()