我仍然不确定我的方法是否正确,但是为了实现MVVM模式,我以以下方式创建了模型类“ Test”:
public class Test : BindableBase
{
private int testNumber;
public int TestNumber
{
get { return testNumber; }
set { SetProperty(ref testNumber, value) }
}
...
}
然后,我在我的类中创建了此类的实例ViewModel:
class ViewModel : BindableBase
{
private Test testVM;
public Test TestVM
{
get { return testVM; }
set { SetProperty(ref testVM, value); }
}
...
在XAML的代码中,View我Test通过TestVM属性绑定了该类的所有属性。尽管这可以正常工作,但是在尝试实现时遇到了一个问题DelegateCommad。
public DelegateCommand StartTestCommand { get; private set; }
到目前为止,在实现DelegateCommands时,如果我想CanExecute在属性更改时触发该方法,则可以将其包含DelegateCommand.RaiseCanExecuteChanged()在属性的setter中。像这样:
...
private bool duringTest;
public bool DuringTest
{
get { return duringTest; }
set
{
SetProperty(ref duringTest, value);
StartTestCommand.RaiseCanExecuteChanged();
}
}
...
这对于在中声明的属性工作正常ViewModel,但是对这些Test属性使用相同的方法时,它将不再起作用。
...
private Test testVM;
public Test TestVM
{
get { return testVM; }
set
{
SetProperty(ref testVM, value);
StartTestCommand.RaiseCanExecuteChanged();
}
}
}
我希望每次TestVM更改from的属性时,都会调用setter,但是会直接更新模型。
我究竟做错了什么?在中使用Model对象时正确的方法是ViewModel什么?
GCT1015
相关分类