我有一个关于MVVM light的问题:是什么“驱动”UI?我可以为每个显示的视图拥有一个ViewModel;ViewLocator处理所有ViewModel(据我所知,用于缓存)。但是是什么驱动了UI?
如果我在我的ViewModel中定义了一个名为“ShowDetail”的命令,我是否需要编写用于显示此视图的代码?
有没有相关示例?谢谢!
如果我在我的ViewModel中定义了一个名为“ShowDetail”的命令,我是否需要编写用于显示此视图的代码?
有没有相关示例?谢谢!
MyViewModel.cs
public class MyViewModel : ViewModelBase
{
(...)
private string _myProperty;
public string MyProperty {
get { return _myProperty; }
set {
_myProperty = value;
RaisePropertyChanged("MyProperty");
}
}
}
MyView.xaml.cs
void MyView() {
DataContext = new MyViewModel();
}
MyView.xaml
<TextBlock Text="{Binding MyProperty}" />
public string CustomerID
{
get
{
return _customerid;
}
set
{
if (_efolderid == value)
{
return;
}
var oldValue = _customerid;
_customerid = value;
// Update bindings and broadcast change using GalaSoft.MvvmLight.Messenging
RaisePropertyChanged("CustomerID", oldValue, value, true);
}
}
void registerForMessages()
{
Messenger.Default.Register<PropertyChangedMessage<string>>(this,
(pcm) =>
{
if (pcm.PropertyName == "CustomerID")
{
customerID = pcm.NewValue;
AddWorkplanCommand.RaiseCanExecuteChanged();
loadCustomerDetails();
}
});
}
我认为你可以看看Cinch V2:
http://www.codeproject.com/KB/WPF/CinchV2_1.aspx
这似乎很有前途。然而,我认为大多数这些框架都相当困难。
我采用了一种简单的MVVM方法实现了一个解决方案,并使用某种监督控制器模式处理视图和视图模型之间的通信。