Как назначить строку текстовому блоку?

#c# #textblock #windows-rt

#c# #текстовый блок #windows-rt

Вопрос:

Кто-нибудь знает, как назначить строку текстовому блоку?

например, у меня есть строка с переменным содержимым и текстовый блок. Текст текстового блока всегда должен соответствовать содержимому строки.

 string number;

public MainPage()
{
    //the textBlock text should now be "1"
    number = "1";

    //the textBlock text should now be "second"
    number = "second";
}
  

Я пытался сделать это автоматически с помощью привязок, но не смог найти решение.

с уважением, Кристиан

Комментарии:

1. Почему бы не использовать TextBlock.Text свойство

2. Я уже использую это, но писать это при каждом изменении строки очень громоздко.

3. Определите частное свойство для вашей строки, и оно будет setter , установите значение вашим TextBlock.Text вот что вы можете сделать, чтобы имитировать его.

4. Посмотрите на привязку данных.

5. Привязка данных @Habib — гораздо более чистый способ сделать это.

Ответ №1:

Для работы привязки данных вам нужно иметь свойство a, а не просто простую переменную-член. И ваш класс Datacontext должен реализовывать интерфейс INotifyPropertyChanged.

 public class MyDataContext : INotifyPropertyChanged

    private string number;
    public string Number {
        get {return number;}
        set {number = value; NotifyPropertyChanged("Number");}
    }

// implement the interface of INotifyPropertyChanged here
// ....
}


public class MainWindow() : Window
{
     private MyDataContext ctx = new MyDataContext();

     //This thing is out of my head, so please don't nail me on the details
     //but you should get the idea ...
     private void InitializeComponent() {
        //...
        //... some other initialization stuff
        //...

        this.Datacontext = ctx;
     }

}
  

И вы можете использовать это в XAML следующим образом

 <Window ...>
    <!-- some other controls etc. -->
    <TextBlock Text={Binding Number} />
    <!-- ... -->
</Window>
  

Комментарии:

1. Обратите внимание, что для того, чтобы это сработало, вам нужно присвоить «Number», а не «число». Отображение настройки строки привязки также сделало бы этот ответ намного лучшим. 1 за правильный подход, хотя.

2. Спасибо за ваш комментарий. Я отредактировал свой ответ в соответствии с вашим предложением. Это не самое красивое решение, но идею следует уловить.