Я пытаюсь связать 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");
}
}
}