我正在使用WPF中的MVVM指示燈。我想通過ViewModel設置基於某些特定條件的按鈕背景色。請建議一些方法來獲得它。由於通過WPF中的MVVM模式更改按鈕背景色
9
A
回答
18
使用觸發器的結合表達:
<Button>
<Button.Style>
<Style TargetType="Button">
<!-- Set the default value here (if any)
if you set it directly on the button that will override the trigger -->
<Setter Property="Background" Value="LightGreen" />
<Style.Triggers>
<DataTrigger Binding="{Binding SomeConditionalProperty}"
Value="True">
<Setter Property="Background" Value="Pink" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
在MVVM也可以經常在通過get-僅屬性視圖模型處理這個問題,以及,例如
public bool SomeConditionalProperty
{
get { /*...*/ }
set
{
//...
OnPropertyChanged("SomeConditionalProperty");
//Because Background is dependent on this property.
OnPropertyChanged("Background");
}
}
public Brush Background
{
get
{
return SomeConditinalProperty ? Brushes.Pink : Brushes.LightGreen;
}
}
然後你只要綁定到Background
。
22
你可以在後臺綁定到一個屬性上的視圖模型的伎倆是使用的IValueConverter與您需要從視圖模型一個布爾值轉換爲顏色的顏色,下面有一個例子返回刷
public class BoolToColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
{
return new SolidColorBrush(Colors.Transparent);
}
return System.Convert.ToBoolean(value) ?
new SolidColorBrush(Colors.Red)
: new SolidColorBrush(Colors.Transparent);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
與像
"{Binding Reviewed, Converter={StaticResource BoolToColorConverter}}"
+0
這比WPF的選定答案更好。 – tzerb
相關問題
- 1. 在wpf中更改按鈕模板的背景顏色
- 2. 通過樣式更改背景顏色
- 3. 在WPF中的EventTrigger上更改按鈕背景顏色
- 4. C#更改按鈕的背景顏色
- 5. 更改按鈕的背景顏色
- 6. 點擊時WPF按鈕更改背景
- 7. WPF Datagrid - 更改點擊該按鈕的行的背景顏色
- 8. WPF在禁用窗口時更改按鈕的背景顏色
- 9. 通過更改按鈕樣式更改按鈕顏色
- 10. 更改React-Native-Material-Design模塊中按鈕的背景顏色
- 11. 更改背景顏色中的ScrollViewer WPF
- 12. 通過按鈕模板更改標籤顏色C#WPF
- 13. 更改按鈕的背景
- 14. WPF - 更改按鈕控件模板的背景時Command.CanExecute是假
- 15. 更改按鈕顏色作爲背景顏色更改?
- 16. Android:如何通過XML中的按鈕更改背景圖像
- 17. 在WPF中更改Webbrowser背景顏色
- 18. Xcode - 更改按鈕上的按鈕背景顏色點擊
- 19. 更改按鈕背景
- 20. 更改按鈕背景
- 21. wpf按鈕背景懸停顏色
- 22. 如何以編程方式更改按鈕的背景顏色
- 23. 按GLUT中的按鈕更改背景顏色
- 24. 如何更改按鈕和背景之間的按鈕背景?
- 25. 更改WPF ItemTemplate的背景顏色
- 26. 如何通過單擊WinForms表單中的按鈕來更改WPF表單中的標籤背景顏色?
- 27. 更改按鈕顏色上單擊MVVM模式
- 28. 編輯/完成按鈕,更改完成按鈕背景顏色
- 29. 更改UIActionSheet按鈕背景顏色和按鈕字體
- 30. 如何通過單擊按鈕來更改我的佈局的背景顏色
當使用wpf時,這是一個非常好的方法,如果您尋找可以移植到silverlight的代碼,您可能還需要表達式SDK以用於觸發器語義 –