WPF设置从ResourceDictionary刷到ViewModel中的属性

时间:2018-03-21 14:32:51

标签: c# wpf mvvm viewmodel resourcedictionary

我用按钮制作视图,我想在点击时更改颜色。 我希望按钮具有默认颜色,并在第一次单击时将其颜色更改为另一种颜色。

为了做到这一点,我想保持干净,所以,我把画笔保存在resourceDictionary中。

<ResourceDictionary 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

     <SolidColorBrush x:Key="WeekCalendarDefaultCellColor" Color="#FFE5CC"/>
     <SolidColorBrush x:Key="WeekCalendarClickCellColor" Color="#FFFF00"/>

</ResourceDictionary>

对于MVVM,我将我的按钮画笔绑定到属性(如果我自己设置颜色绑定有效,但我想在整个应用程序中使用相同的颜色,所以我认为最好从字典中取出它)

public SolidColorBrush CurrentBrush =//????;

现在我想将我的字典中的画笔插入此属性,如何将字典中的画笔提取到视图模型?

提前感谢所有帮助者!

1 个答案:

答案 0 :(得分:0)

如果您在后面的代码中使用它,此代码将起作用:

button.Background = (Brush)FindResource("ButtonNormalBackgroundBrush");

BUT!你说你想要把它弄干净。

  

对于MVVM,我将我的按钮画笔绑定到属性

您不应将按钮画笔绑定到VM属性。 Brush是GUI(在MVVM中查看)部分。 VM应该包含一些状态,比如bool或enum等。你可以用按钮样式读取这个状态并使用触发器来改变背景。