绑定到ViewModel';s子类属性
本文关键字:子类 属性 ViewModel 绑定 | 更新日期: 2023-09-27 18:20:48
我很难将视图中的StatusBarItem内容元素绑定到ViewModel中的子类属性,我正在使用MVVM Light框架/
ViewModel:
public class PageMainViewModel : ViewModelBase
{
LoggedOnUserInfo UserInfo;
public LoggedOnUser UserInfo
{
set
{
_UserInfo = value;
RaisePropertyChanged("UserInfo");
}
}
}
为了完全清楚起见,LoggedOnUser类定义如下
public class LoggedOnUser : INotifyPropertyChanged
{
private string _Initials;
public event PropertyChangedEventHandler PropertyChanged;
public LoggedOnUser()
{
}
[DataMember]
public string Initials
{
get { return _Initials; }
set
{
_Initials = value;
OnPropertyChanged("Initials");
}
}
protected void OnPropertyChanged(string propValue)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propValue));
}
}
}
我的视图DataContext正在设置中,并且正在工作,因为我可以看到其他绑定正在工作,但我尝试绑定到XAML中的UserInfo.Initials属性时产生了空结果。
XAML:
<StatusBarItem Grid.Column="0" Content="{Binding UserInfo.Initials}" Margin="5,0,0,0" VerticalAlignment="Center" Focusable="False" />
UserInfo属性是在创建viewModel后设置的,这是由于几个因素,但我认为用我的属性更改的事件,这是可以的。
如有任何建议,我们将不胜感激。
如果UserInfo
上似乎没有getter,那么绑定就不走运了。
(当绑定出现问题时,还会检查绑定错误,它们可能会告诉你它们的所有问题)
将getter添加到您的userinfo
public class PageMainViewModel : ViewModelBase
{
LoggedOnUserInfo UserInfo;
public LoggedOnUser UserInfo
{
get {return _UserInfo;}
set
{
_UserInfo = value;
RaisePropertyChanged("UserInfo");
}
}
}
和H.B.所说的一样-检查您的输出窗口中的绑定错误
我不太清楚为什么要在UserInfo_属性中绑定initials_属性。如果没有UserInfo_属性的getter,就无法访问initials_属性。
我建议与后者单独绑定。