當布爾變量爲true時,我需要更改標籤和按鈕的背景(在false時返回默認顏色)。所以我寫了一個附加的屬性。它看起來像這樣至今:WPF用附加屬性更改控件的背景
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
時,backgroundcolor更改爲LimeGreen
。
我的問題:
顏色LimeGreen
是硬編碼。我想在XAML中設置該顏色(以及默認顏色)。所以我可以決定後臺切換哪種顏色。我怎樣才能做到這一點?
如何使用多一個附加屬性來指定顏色,當'Status'是真的嗎?或者讓'Status'成爲'Brush'類型? – Sinatr 2014-10-17 13:20:49
我正在努力創造一個(兩個)更多的屬性。我如何在'OnStatusChanged'中使用它們? – 2014-10-17 13:22:19