Prism中viewmodel内的依赖属性

时间:2016-05-15 17:29:54

标签: mvvm prism dependency-properties

有没有办法在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在当前上下文中不存在”。有没有其他方法可以做到这一点?

1 个答案:

答案 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}}代码段。