Связывающая строка с кнопкой

Я пытаюсь связать string с Button в чистом C # (без XAML), но, очевидно, я делаю это неправильно, в результате мой код состоит в том, что кнопка исчезает.

Я определяю свою собственность следующим образом:

public string selectionString { get; set; }

И вот как я связываю строку с кнопкой:

        selectionString = "Hello";
        selectionButton = new Button
        {
            TextColor = Color.Black
        };
        selectionButton.SetBinding(Button.TextProperty, "selectionString");
        Children.Add(selectionButton); 

Я пытался использовать BindingMode.TwoWay , но он не работает.

Конечно, установка текста и удаление привязки заставляет кнопку появляться и работать.

Мне нужно только это: текст кнопки должен быть selectionString , и если это изменяется из-за внешнего события, поэтому текст кнопки должен измениться соответственно.

Я что-то упускаю из-за того, как работает привязка?

Всего 1 ответ


Привязки работают с открытыми свойствами в контексте привязки представления и отвечают на срабатывание событий INotifyPropertyChanged. Надеюсь, это продемонстрирует вам.

public class MyViewModel : INotifyPropertyChanged
{
  // Fire RaisePropertyChanged in the setter, I use Fody to weave this in
  public string SelectionString {get;set;}
}

public class MyView : Page
{
  protected override void OnBindingContextChanged()
  {
    if (BindingContext is MyViewModel)
    {
      this.SetBinding(Button.TextProperty, "SelectionString");
    }
  }
}

Есть идеи?

10000