Связывающая строка с кнопкой - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь связать 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 Ответ

1 голос
/ 17 мая 2019

Привязки работают с открытыми свойствами в контексте привязки представления и отвечают на срабатывание событий 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");
    }
  }
}
...