Переменная привязки с TextBlock

У меня есть код XAML (внутри Page стандартного пустого шаблона страницы) как

<Grid>
  <TextBlock x:Name="tbBindingBlock">
</Grid>

И у меня есть int с именем iTestBinding в программном коде. Есть ли простой (поскольку я привязываю только одну переменную, а не коллекцию) способ связать их вместе, чтобы последнее значение iTestBinding (которое постоянно изменяется из кода программной части) всегда отображалось внутри tbBindingBlock ?


Редактировать: код довольно короткий:

public sealed partial class MainPage : Page
{
    public int iTestBinding=0;

person Aniruddha Varma    schedule 29.06.2015    source источник
comment
См. Обзор привязки данных страница в MSDN.   -  person Sheridan    schedule 29.06.2015


Ответы (1)


вы можете напрямую связать свое значение, используя приведенный ниже код

<TextBlock x:Name="tbBindingBlock" Text="{Binding iTestBinding}">

сохраните свое значение для привязки как свойство в коде, как это

      public int iTestBinding{ get; set; }

и установите контекст данных в событии загрузки страницы, как это

      this.DataContext = this;

если вы хотите обновить значение при нажатии кнопки и отразить его в пользовательском интерфейсе, вам необходимо реализовать PropertyChangedEventHandler.

 public event PropertyChangedEventHandler PropertyChanged;
 private void RaisePropertyChanged(string propertyName)
    {
        // take a copy to prevent thread issues
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }

вызовите RaisePropertyChanged("имя измененного свойства"), где бы вы ни обновили значение свойства.

Лучше сохранить собственный набор для свойства, чтобы мы могли вызывать этот метод из установщика. Например

    private string myText;
    public string MyText { 
        get {
            return myText;
    }
        set {
            myText = value;
            RaisePropertyChanged("MyText");
        }
    }
person Joseph    schedule 29.06.2015
comment
Благодарю за ваш ответ. Какой контекст данных будет установлен в этом случае? - person Aniruddha Varma; 29.06.2015
comment
возможно, вы можете установить iTestBinding в качестве контекста данных, если на вашей странице нет других привязок. - person Joseph; 29.06.2015
comment
Да, я пробовал это, но на странице ничего не отображается (текстовый блок отображается пустым). - person Aniruddha Varma; 29.06.2015
comment
Да, я отредактировал вопрос. В коде больше ничего нет (есть просто код для увеличения переменной на + 1, когда пользователь нажимает кнопку). - person Aniruddha Varma; 29.06.2015
comment
Это не так (текст не отображается в текстовом поле), но спасибо за попытку помочь. Я подозреваю, что это может быть как-то связано с разницей в привязке в Metro и WPF. - person Aniruddha Varma; 30.06.2015