Доступ к свойствам WPF и ViewModel - PullRequest
1 голос
/ 18 ноября 2010

Основным компонентом моего приложения является элемент управления с вкладками, в котором содержится N представлений, и текст данных этих представлений представляет собой отдельный объект ViewModel.У меня есть строка состояния в нижней части приложения, и она содержит несколько текстовых полей.Я хочу, чтобы одно из текстовых полей отображало метку времени для выбранной в данный момент вкладки.Отметка времени - это свойство объекта ViewModel, которое установлено как текстовый вид представления.

Я новичок WPF и не совсем уверен, как связать это свойство со строкой состояния.

Ответы [ 2 ]

3 голосов
/ 19 ноября 2010

Убедитесь, что ViewModel реализует INotifyPropertyChanged.

Например ...

/// <summary>
/// Sample ViewModel.
/// </summary>
public class ViewModel : INotifyPropertyChanged
{
    #region Public Properties

    /// <summary>
    /// Timestamp property
    /// </summary>
    public DateTime Timestamp
    {
        get
        {
            return this._Timestamp;
        }
        set
        {
            if (value != this._Timestamp)
            {
                this._Timestamp = value;

                // NOTE: This is where the ProperyChanged event will get raised
                //       which will result in the UI automatically refreshing itself.
                OnPropertyChanged("Timestamp");
            }
        }
    }

    #endregion


    #region INotifyPropertyChanged Members

    /// <summary>
    /// Event
    /// </summary>
    public event PropertyChangedEventHandler PropertyChanged;

    /// <summary>
    /// Raise the PropertyChanged event.
    /// </summary>
    protected void OnPropertyChanged(string propertyName)
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

    #endregion


    #region Private Fields

    private DateTime _Timestamp;

    #endregion
}
1 голос
/ 18 ноября 2010

Что-то вроде:

<TextBox Text="{Binding ElementName=tabControl, Path=SelectedItem.DataContext.Timestamp}" />

Немного в зависимости от того, привязан ли источник данных вашего tabcontrol к базе данных или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...