返回MVVM中的单例值以进行绑定

时间:2017-07-18 19:27:48

标签: c# wpf mvvm

我试图弄清楚是否可以使用单例中的值作为我的绑定。我想做这样的事情吗?

public class MySingleton : INotifyPropertyChanged    
{
   //...inotifypropertychanged and singleton implementation

   private bool _isChecked;
   public bool IsChecked
   {
       get 
       { 
           return _isChecked; 
       }
       set
       {
          _isChecked= value;
          OnPropertyChanged("IsChecked");
       }
    }

    //...other implementation
}

public class MyViewModel : INotifyPropertyChanged
{
  //...inotifypropertychanged and other implementation

  public bool IsAllChecked { get { return MySingleton.GetInstance().IsChecked; } }
}

一些Xaml:

<ToggleButton IsChecked = "{Binding IsAllChecked}"/>

我试过这个并且绑定似乎没有更新。我用ObservableCollection尝试了这个并且效果很好,但其他类型都没有。我认为ObservableCollection是特别的。

1 个答案:

答案 0 :(得分:2)

MyViewModel不会为PropertyChanged属性提升IsAllChecked,用户界面中的更新不会发生(ObservableCollection完全不同的情况 - INotifyCollectionChanged)。

为什么不声明Instance属性而不是GetInstance()方法并直接绑定到MySingleton.Instance

"{Binding Path=IsChecked, Source={x:Static myNameSpace:MySingleton.Instance}}"