Обновите привязку в компоненте для MAUI.C#

Место общения программистов C#
Ответить
Anonymous
 Обновите привязку в компоненте для MAUI.

Сообщение Anonymous »

В моем проекте .NET 8 MAUI я создаю такой компонент, как ContentView. Я передаю этому компоненту свойство под названием Values.
Вот определение:

Код: Выделить всё

public partial class EntryChoices : ContentView
{
public static readonly BindableProperty ValuesProperty =
BindableProperty.Create(nameof(Values),
typeof(List), typeof(EntryChoices),
null, BindingMode.TwoWay);

public List? Values
{
get => (List)GetValue(ValuesProperty);
set => SetValue(ValuesProperty, value);
}
}
В XAML я использую это значение для привязки FlexLayout Если я добавлю некоторые значения в Values, это не изменит пользовательский интерфейс. Я попробовал добавить

Код: Выделить всё

OnPropertyChanged(nameof(Values));
но это не помогает и не добавляет INotifyPropertyChanged в ContentView. Функция следующая

Код: Выделить всё

public void AddItem(string item)
{
if (Values == null)
Values = new List();

Values.Add(item);
OnPropertyChanged(nameof(Values));
OnPropertyChanged(nameof(ValueString));
}
Я не могу найти способ обновить пользовательский интерфейс при изменении значений.
Обновить : теперь значения являются ObservableCollection:

Код: Выделить всё

public static readonly BindableProperty ValuesProperty =
BindableProperty.Create(nameof(Values),
typeof(IEnumerable), typeof(EntryChoices),
defaultBindingMode: BindingMode.TwoWay,
propertyChanged: OnValueChanged);

public ObservableCollection? Values
{
get => (ObservableCollection)GetValue(ValuesProperty);
set => SetValue(ValuesProperty, value);
}
В XAML я называю это представление следующим образом: OriginalList — это модель представления, определенная как

Код: Выделить всё

[ObservableProperty]
private ObservableCollection _originalList;
Если я назначу этому свойству список с некоторыми значениями, например

Код: Выделить всё

OriginalList = new ObservableCollection(vl);
компонент не активирует набор значений свойств.

Подробнее здесь: https://stackoverflow.com/questions/790 ... t-for-maui
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»