1

テキストブロックの前景色をローカル変数にバインドしたいと思います。変数に値がない場合(= null)、前景色は黒である必要があります。変数がnullでない場合、前景色は黒である必要があります。バインディングを介してそれを解決することはできませんか?

4

1 に答える 1

0

最初に値コンバーターを使用できます。このようにコンバーターを定義します

[ValueConversion (typeof(object), typeof(SolidColorBrush))]
public class ObjectToBrushConverter : IValueConverter
{

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null)
            return new SolidColorBrush(Colors.Black);
        return new SolidColorBrush(Colors.Red);
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}

次に、XAML ファイルでコンバーターをリソースとして定義します。

    <Window.Resources>
        <local:ObjectToBrushConverter x:Key="ObjectToBrushConverter"/>
    </Window.Resources>

次に、プロパティにバインドし、コンバーターを提供します

    <TextBox Name="textb" Text="Hello" Foreground="{Binding Path=MyObject,  Converter={StaticResource ResourceKey=ObjectToBrushConverter}}">

値コンバーターの msdn をチェックしてください http://msdn.microsoft.com/en-us/library/system.windows.data.ivalueconverter.aspx

もちろん、この例では変数をパブリック プロパティとして定義し、Object 型であると仮定します。

于 2013-02-11T09:22:51.797 に答える