我是MVVM模式中真正的初学者。我试图改变按钮的点击网格的背景。我有一个包含一个按钮的网格的xaml,以及一个ViewModel .cs,我想从中更改网格的按钮点击背景。直到有一次,我只是继承显示一个MessageBox当我点击...MVVM在点击时改变网格的背景颜色
的.xaml代码:
<Window x:Class="WpfSimple.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfSimple"
Title="MainWindow" Height="150" Width="370">
<Window.DataContext>
<local:MainWindowViewModel/>
</Window.DataContext>
<Grid>
<Button Content="Click"
Height="23"
HorizontalAlignment="Left"
Background="Gray"
Margin="75.944,47.465,0,0"
Name="btnClick"
VerticalAlignment="Top"
Width="203"
Command="{Binding ButtonCommand}"/>
<!--What is necessary to add for changing grid color ? Commandparameter ?-->
</Grid>
MainWindowViewModel.cs代码:
namespace WpfSimple
{
class MainWindowViewModel
{
private ICommand m_ButtonCommand;
public ICommand ButtonCommand
{
get
{
return m_ButtonCommand;
}
set
{
m_ButtonCommand = value;
}
}
public MainWindowViewModel()
{
ButtonCommand=new RelayCommand(new Action<object>(ChangeBgColor));
}
public void ChangeBgColor(object obj)
{
/*HERE I WANT TO CHANGE GRID COLOR*/
}
}
}
对不起,我烂英文。
此致敬礼。
是的!非常感谢Vadim Martynov!我不确定我是否理解“INotifyPropertyChanged接口”的目的,因为它没有通知我什么......但你的回答是非常有用的。 此致敬礼。 – Chefty
@Chefty INPC是数据绑定所必需的。没有它,当你在ViewModel中改变属性时,你的颜色不会改变。而且,INPC是数据绑定的一般特征。你可以阅读更多关于MSDN:https://msdn.microsoft.com/en-US/library/ms752347(v=vs.100).aspx –
我不能添加新的静态资源到我的控制,这是一个错误:“在WPF项目中不支持GridStateToBackgroundColorConverter“是否正常? – Chefty