ブール変数が true の場合、ラベルとボタンの背景を変更する必要があります (false の場合はデフォルトの色に戻ります)。だから私は添付プロパティを書きました。これまでのところ、次のようになります。
public class BackgroundChanger : DependencyObject
{
#region dependency properties
// status
public static bool GetStatus(DependencyObject obj)
{
return (bool)obj.GetValue(StatusProperty);
}
public static void SetStatus(DependencyObject obj, bool value)
{
obj.SetValue(StatusProperty, value);
}
public static readonly DependencyProperty StatusProperty = DependencyProperty.RegisterAttached("Status",
typeof(bool), typeof(BackgroundChanger), new UIPropertyMetadata(false, OnStatusChange));
#endregion
private static void OnStatusChange(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
var element = obj as Control;
if (element != null)
{
if ((bool)e.NewValue)
element.Background = Brushes.LimeGreen;
else
element.Background = default(Brush);
}
}
}
そして、私はそれを次のように使用します:
<Label CustomControls:BackgroundChanger.Status="{Binding test}" />
それは正常に動作します。対応する変数test
がビューモデルに設定されると、背景色が に変わりますLimeGreen
。
私の質問:
色LimeGreen
はハードコードされています。XAMLでもその色(およびデフォルトの色も)を設定したいと思います。だから、背景がどの2色に切り替わるかを決めることができます。どうやってやるの?