2012-01-18 3 views
0

Я изо всех сил, чтобы быть в состоянии связать элемент контента 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)); 
     } 
    } 

} 

My Views DataContext создается и работает, как я могу видеть другие привязки Workin g, но мои попытки связать с свойством UserInfo.Initials в моем XAML производят пустой результат.

XAML:

<StatusBarItem Grid.Column="0" Content="{Binding UserInfo.Initials}" Margin="5,0,0,0" VerticalAlignment="Center" Focusable="False" /> 

Свойство UserInfo устанавливается после того, как ViewModel создается из-за нескольких факторов, но я думал, что с моим PropertyChanged событий это было бы нормально.

Любые советы по этому вопросу будут очень признательны.

ответ

2

У вас, похоже, нет геттера на UserInfo, привязке будет не повезло.

(Также check for binding errors, когда возникли проблемы с креплениями, они, вероятно, расскажет вам обо всех своих проблемах)

+0

Немного смущен этой очевидной очевидной ошибкой. Спасибо вам всем, кто помог. – Emlyn

0

Я не совсем уверен, почему у вас есть initials_ атрибут, связанный внутри атрибута UserInfo_. Вы не можете получить доступ к атрибуту initials_ без атрибута UserInfo_.

Я бы предложил связать последнее отдельно.

0

добавить геттер к вашему UserInfo

public class PageMainViewModel : ViewModelBase 
{ 
    LoggedOnUserInfo UserInfo; 

    public LoggedOnUser UserInfo 
    { 
    get {return _UserInfo;} 
    set 
    { 
     _UserInfo = value; 
     RaisePropertyChanged("UserInfo"); 
    } 
    } 
} 

и как H.B. сказал - проверьте свое окно вывода на ошибки привязки

Смежные вопросы