Я разрабатываю приложение, которое взаимодействует с RFID Reader, у меня есть следующая метка, которая берет его значение из Reader (когда я нажимаю на кнопку чтения на оборудовании)
<Label Text="{Binding Statistics.TotalUniqueCount}" />
Я хочу обработать событие, когда текстовое значение изменилось, похоже, что метка не имеет такого события, есть ли элемент управления представлением текста, который может обрабатывать событие изменения текста? Я пытался использовать элемент управления Entry, но проблема в том, что когда я читаю метки RFID, он дает мне правильные значения в первый и второй раз, а в третий раз - неправильные значения, и это происходит только тогда, когда я использую Entry. например, я читаю 3 уникальных тега, это дает мне первый раз 3, когда я читаю больше 2 тегов, число становится 5, но когда я читаю в третий раз еще 3 тега, число становится 1. Я помещаю Entry и Label в на той же странице с той же привязкой метка показывает правильные значения, а запись - неправильные.
Есть ли решение для обработки события при изменении этой привязки (Statistics.TotalUniqueCount)?
2 ответа
Как упоминалось в комментариях, похоже, что класс Statistics должен реализовывать INotifyPropertyChanged (именно так привязка может обновлять пользовательский интерфейс при изменении данных). Если это так, вы должны просто подписаться на это же событие в вашем коде. Везде, где у вас есть доступ к этой переменной статистики (в коде позади или viewmodel), просто сделайте
Statistics.PropertyChanged += (o,e)=>
{
if (e.PropertyName = "TotalUniqueCount")
{
//do something
}
}
То, что вы можете сделать, это на любой странице / представлении, где находится ваш ярлык, создать новое свойство bindable, которое установлено для вашей привязки. Затем добавьте метод propertyChanged, который будет вызываться при изменении текста на вашем ярлыке.
public static BindableProperty TextChangedProperty = BindableProperty.Create(nameof(TextChanged), typeof(string), typeof(YourView), string.Empty, propertyChanged:OnTextChanged);
public string TextChanged
{
get { return (string)GetValue(TextChangedProperty); }
set { SetValue(TextChangedProperty, value); }
}
static void OnTextChanged(BindableObject bindable, object oldValue, object newValue)
{
//Do stuff
}
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.