부울 변수가 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
이 뷰 모델에 설정되면 배경색이 LimeGreen
으로 변경됩니다.
내 질문 :
색상 LimeGreen
가 하드 코딩되어있다. XAML에서 그 색상 (및 기본 색상뿐 아니라)을 설정하고 싶습니다. 그래서 두 가지 색상이 배경을 전환하는 것을 결정할 수 있습니다. 내가 어떻게 할 수 있니?
모양을? 또는'Status'를'Brush' 타입으로 만드시겠습니까? – Sinatr
나는 하나의 (광석 2 개) 더 많은 속성을 만드는 데 어려움을 겪고있다. 'OnStatusChanged'에서 어떻게 사용합니까? –