Свързваща променлива с 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