Это работает в Xamarin?
Да, это так.
Если это так, почему этот код не меняет текст?
Поскольку компонент Label
не привязан к переменной, он просто получает его значение, когда вы не сделали больше Label_ControlSW.Text = controlSW_Out;
e.
Чтобы все заработало, у вас есть два основных варианта:
1. Установите значение для метки при каждом изменении;
Здесь нет магии. Просто установите значения или переменную как Али Хейкал предлагает в своем ответе
2. Свяжите страницу (представление) с наблюдаемым объектом , затем представление будет прослушивать каждое изменение вашего наблюдаемого объекта (часто модели представления) и реагировать на это (например, изменяя свое собственное текстовое значение).
Полагаю, ты собираешься заняться вторым. Таким образом, вы можете создать полное свойство общедоступной строки в коде вашей страницы и привязать экземпляр вашей страницы к себе. Как это:
XAML
<Label Text="{Binding MyStringProperty}"
.../>
Код позади
public partial class MyTestPage : ContentPage
{
private string myStringProperty;
public string MyStringProperty
{
get { return myStringProperty; }
set
{
myStringProperty = value;
OnPropertyChanged(nameof(MyStringProperty)); // Notify that there was a change on this property
}
}
public MyTestPage()
{
InitializeComponents();
BindingContext = this;
MyStringProperty = "New label text"; // It will be shown at your label
}
}
Вам следует взглянуть на официальные документы о привязках данных и шаблоне MVVM на XF , и если вы начинаете с Xamarin.Forms, я настоятельно рекомендую вам следовать официальному руководству по началу работы с , которая охватывает каждую тему достаточно ясно и глубоко, чтобы выучить все, что вам нужно.
Надеюсь, это поможет.