有没有办法在viewmodel中声明依赖属性?我想在viewmodel中声明一个依赖属性,并通过命令更改它的值。
public class MyViewModel : Prism.Windows.Mvvm.ViewModelBase
{
public bool IsPaneVisible
{
get { return (bool)GetValue(IsPaneVisibleProperty); }
set { SetValue(IsPaneVisibleProperty, value); }
}
public static readonly DependencyProperty IsPaneVisibleProperty =
DependencyProperty.Register("IsPaneVisible", typeof(bool), typeof(MyViewModel), new PropertyMetadata(0));
public ICommand VisibilityChangeCommand { get; set; }
public MyViewModel()
{
VisibilityChangeCommand = new DelegateCommand(OnVisibilityChange);
}
private void OnVisibilityChange()
{
IsPaneVisible = !IsPaneVisible;
}
}
问题是,我在IsPaneVisible中遇到了一些编译错误'getter / setter:“GetValue在当前上下文中不存在”。有没有其他方法可以做到这一点?
答案 0 :(得分:1)
DependencyProperty
上使用了UserControl
,其中一个例子是DependencyObject
。 Prism的ViewModelBase不是INotifyPropertyChanged
,主要是因为这种类型是特定于平台的。为了支持视图模型的绑定,我们通常使用private string _imagePath;
public string ImagePath
{
get { return _imagePath; }
set { SetProperty(ref _imagePath, value); }
}
。
Prism在DependencyObject
基类中实现此接口,ViewModelBase也从该基类派生。您可以像这样定义属性:
propp
如果您安装BindableBase
Visual Studio扩展程序,则可以使用{{1}}代码段。