Привязка к пользовательскому BindableProperty не работаетC#

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

Сообщение Anonymous »


У меня возникли проблемы с привязкой значений к имеющемуся у меня пользовательскому ContentView.

У меня есть ContentPage, который использует AccountStatusView, который является ContentView и имеет BindableProperty. Это BindableProperty имеет тип AccountStatus. Когда я пытаюсь использовать привязку, BindableProperty никогда не обновляется.

Кто-нибудь знает, почему это не работает?

MainPage — xaml

MainPage — C#

публичный частичный класс MainPage: ContentPage { общественный MainPage (ViewModel vm) { BindingContext = vm; ИнициализироватьКомпонент(); } } Модель просмотра

публичный частичный класс ViewModel: ObservableObject { [ObservableProperty] частный AccountStatusDto _accountStatus; // . . . общедоступная асинхронная задача InitializeAsync() { AccountStatus = ждут _repo.GetAccountStatus(); } } AccountStatusView

публичный частичный класс AccountStatusView: ContentView { общедоступный статический только для чтения BindableProperty AccountStatusProperty = BindableProperty.Create(nameof(AccountStatus), typeof(AccountStatusDto), typeof(AccountStatusView), propertyChanged: DoSomething); public static void DoSomething (привязываемый BindableObject, старое значение объекта, новое значение объекта) { // делаем что-то с новым значением } общедоступный статус аккаунтаDto AccountStatus { get => (AccountStatusDto) GetValue (AccountStatusProperty); set => SetValue (AccountStatusProperty, значение); } } ИЗМЕНИТЬ Я нашел этот ответ от ToolmakerSteve

При создании пользовательского компонента (включая XAML) НЕ устанавливайте BindingContext = это;

И

ДОСТУП К СВОЙСТВАМ КОМПОНЕНТА ЧЕРЕЗ x:Name

Решение: присвойте пользовательскому компоненту (карте) имя x:Name и сделайте его «Источник» этих привязок:

Ответить

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

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

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

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

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