あなたはこのためIValueConverter
を使用して試みることができる:
[ValueConversion(typeof (MyCoordObject), typeof (Brush))]
public class CoordToBrushConverter : ConverterExtension
{
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var coordObject= (MyCoordObject) value;
if (coordObject.X == 132) return Brushes.Red;
//define your own brushes as StaticResource or something, this won't work
return Brushes.Black;
}
public override object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
//nothing
return value;
}
}
今、あなたはちょうどあなたがコンバータに渡したいどのオブジェクトを把握する必要があります。あなたが座標に含まれているオブジェクトを持っていない場合は、多分あなたはMultiValueConverterを使用して座標を制御から一つずつを渡すことができます
<my:CoordToBrushConverter x:key="myConverter"/>
<TextBox BackgroundBrush={Binding myObj, Converter={StaticResource myConverter}} />
:このようなあなたのXAMLでこれを使用しますか?あなたはおそらくこれをうまく動作させるためにこれを使って遊ぶべきです。
コンバータを使用したくない場合は、MVVMフレームワークのいくつかが、メソッドへのバインディングをサポートしていると誤解されていない場合は、いつでもチェックアウトできます。
チェックCaliburn又はMVVMLight
HTH
CoordObjectとは何ですか?これはどのように設定されますか? – ColinE
カスタムオブジェクトまたは座標への参照。 CoordObjectは実際には存在しません。私は答えをより良く指定するように更新します。 – RoelF