2012-05-02 9 views
0

下記の値コンバータを検討してください。 "Red"や "Green"などの値をコンバーターに簡単に渡すことはできますが、XAMLで定義されたブラシをどのように渡すことができますか?静的リソースをカスタムSystem.Windows.Data.IValueConverterに渡しますか?

FalseBrushMyNiceBrushにバインドするにはどうすればよいですか? XAMLで

<local:MyBrushConverter x:Key="BackgroundConverter" FalseBrush="Red" TrueBrush="Green" /> 

<LinearGradientBrush x:Key="MyNiceBrush" StartPoint="0,0" EndPoint="0,1"> 
    <GradientStop Offset="0" Color="#4C7F00" /> 
    <GradientStop Offset="1" Color="#A0B529" /> 
</LinearGradientBrush> 

、私はこのコンバータに私のオブジェクトのプロパティをバインド:Background="{Binding MyClass.TrueOrFalseProperty, Converter={StaticResource BackgroundConverter} ...

ここに私のコンバータです:

public class MyBrushConverter : IValueConverter 
{ 
    public Brush FalseBrush { get; set; } 
    public Brush TrueBrush { get; set; } 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if ((bool)value) 
      return TrueBrush; 
     else 
      return FalseBrush; 
    } 

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

は、なぜあなたはStaticResource' '経由でこれを行うことはできませんか? 'FalseBrush = {StaticResource MyNiceBrush}'。 – Zabavsky

+0

私はそれを試みましたが、例外が発生し続けます: "'System.Windows.Markup.StaticResourceHolder'の値を指定すると例外がスローされました。 – l33t

+0

Lol ...ブラシリソースをコンバータ宣言の上に置くと効果的です! – l33t

答えて

1
<local:MyBrushConverter x:Key="BackgroundConverter" FalseBrush={StaticResource MyNiceBrush} TrueBrush="Green" /> 
関連する問題