Skip to main content
 首页 » 编程设计

c#之在 ViewModel 中使用 Observable 集合创建 DependencyPropery

2024年02月05日26langtianya

<分区>

我有 WPF 应用程序,我正在使用 MVVM。我有一个名为 Session 的类,如下所示: session .cs

 public class Session:ObservableCollection<Session> 
    { 
        public int value { get; set; } 
        public string name { get; set; } 
 
 
 
    } 
 
    public class CustomSession:DependencyObject 
    { 
        public static readonly DependencyProperty SessionCollectionProperty = 
            DependencyProperty.Register("SessionCollection", typeof(Session), typeof(CustomSession), new PropertyMetadata()); 
 
        public Session SessionCollection 
        { 
            get { return (Session)GetValue(SessionCollectionProperty); } 
            set { SetValue(SessionCollectionProperty, value); } 
        } 
 
 
    } 

我的 ViewModel 如下: View 模型.cs

 public class ViewModel:BindableBase 
{ 
    private ObservableCollection<Session> _sessions; 
            public ObservableCollection<Session> sessionsCollection 
            { 
                get { return _sessions; } 
                set { SetProperty(ref _sessions, value); } 
            } 
 
    public ViewModel() 
            { 
    sessionsCollection = allSessions(); 
    } 
 
    public ObservableCollection<Session> allSessions() 
            { 
                CustomSession custom = new CustomSession(); 
                custom.SessionCollection.Add(new Session() { name = "LocateSession", value = 10 }); //System.Null Reference Exception. 
                custom.SessionCollection.Add(new Session() { name = "TrackSession", value = 20 }); 
                custom.SessionCollection.Add(new Session() { name = "MonitorSession", value = 25 });  
                custom.SessionCollection.Add(new Session() { name = "MassSnapshot", value = 18 }); 
                custom.SessionCollection.Add(new Session() { name = "MassContinuous", value = 9 }); 
                return custom.SessionCollection; 
            } 
} 

我有一个 UI,我想在其中绑定(bind)这个 Observable 集合。每当我尝试添加一个项目时 custom.SessionCollection.Add(new Session() { name = "LocateSession", value = 10 }); 我得到空引用异常。我想从 ViewModel 填充 ObservableCollection。我该怎么做。请帮忙。