Форма Xamarin Добавить множественную привязку

Пожалуйста, мне нужна помощь.

У меня есть приложение Xamarin Form, которое очень хорошо работает с привязкой данных к своей модели представления с именем OrderDetailViewModel.

Но сегодня я должен добавить еще одно поле DataBinding в строку 10 Binding OrderStatusMessage, которое связано с его файлом Xaml.cs (код позади), но из любопытства это поле не работает, я имею в виду, что оно не меняет текст метки динамически после привязки метки text в свойство, расположенное в его файле xaml.cs (код позади файла).

В строке 4 вы можете найти привязку данных к файлу MVVM с именем OrderDetailViewModel, который работает хорошо.

Но проблема в строке 10 Binding OrderStatusMessage, которая представляет собой привязку данных к собственному файлу xaml.cs, не изменяет текст метки на новое сообщение. Я протестировал тот же код Binding OrderStatusMessage вне тега CollectionView.ItemTemplate, и он работает правильно, поэтому только когда я помещаю внутри тег CollectionView.ItemTemplate, он не извлекает обновленный текст.

В приведенном ниже коде есть только одно свойство, которое привязано к его файлу xaml.cs (код позади), который находится в строке 10 {Binding OrderStatusMessage}, который не получает обновленный текст, остальные привязаны к MVVM, который работает хорошо.

PS: я хотел бы добавить множественную привязку к приведенному ниже коду в строке 4:

имя файла: OrderDetailViewPage.xaml

<CollectionView.ItemTemplate >
    <DataTemplate >
        <StackLayout
            xct:TouchEffect.LongPressCommand = "{Binding LongPressCommand, Source = {RelativeSource AncestorType = {x:Type local:OrderDetailViewModel}}}"
            xct:TouchEffect.LongPressCommandParameter = "{Binding .}"
            xct:TouchEffect.PressedScale = "1.2"
            xct:TouchEffect.NativeAnimation = "True">

            <StackLayout>
                <Label Text = "{Binding OrderStatusMessage}" HorizontalOptions = "CenterAndExpand" FontFamily = "fasolid" FontSize = "18" FontAttributes = "Bold" TextColor = "Black"/>
            </StackLayout>

            <Label Text = "{Binding Id}"
                FontSize = "Medium"/>
            <Label Text = "Order number" HorizontalOptions = "CenterAndExpand"/>
            <Label Text = "{Binding OrderId}"
                TextColor = "Purple" FontAttributes = "Bold"
                FontSize = "Large" HorizontalOptions = "CenterAndExpand"/>
            <Label Text = "{Binding OrderDetail}"
                TextColor = "Purple"
                FontSize = "Small" />
            <Label Text = "{Binding OrderDate}"
                TextColor = "Purple"
                FontSize = "Small" />
            <Label Text = "{Binding IsOrderComplete}"
                TextColor = "Purple"
                FontSize = "Small" />
        </StackLayout>
    </DataTemplate>
</CollectionView.ItemTemplate>

Пожалуйста, опубликуйте соответствующий код виртуальной машины

Jason 30.01.2023 11:49

@Jason Большое спасибо за попытку помочь мне. Проблема не в VM, все привязки полей к MVVM работают хорошо. Есть только одно поле, которое привязывается к собственному файлу xaml.cs (код позади), а именно <Label Text = "{Binding OrderStatusMessage}" HorizontalOptions = "CenterAndExpand" FontFamily = "fasolid" FontSize = "18" FontAttributes = "Bold" TextColor = "Black"/> </StackLayout>, которое не обновляется.

Chloe 30.01.2023 14:55

@Jason Но когда я перемещаю этот код из блока CollectionView.ItemTemplate, он работает хорошо и получает обновленное сообщение. Я где-то читал, что мне нужна множественная привязка.

Chloe 30.01.2023 15:02
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы пытались связать свою метку внутри CollectionView.ItemTemplate, используя свойство Path? Вот так: <Label Text = "{Binding Path=OrderStatusMessage, Source = {x:Reference pageName}}"/>

Спасибо за попытку помочь. Я попробовал ваш код и получил следующее сообщение об ошибке: Xamarin.Forms.Xaml.XamlParseException Message=Position 67:44. Не удается найти объект, на который ссылается OrderDetailViewPage Source=Xamarin.Forms.Xaml

Chloe 30.01.2023 15:40

Вы использовали x:Name со своей страницы контента в качестве ссылки?

Marija Magdalena Dominković 30.01.2023 15:45

Должен ли x:Reference pageName быть реальным именем страницы? если это так, я сделал это, я изменил имя страницы на настоящее имя страницы OrderDetailViewPage, как показано ниже Source = {x:Reference OrderDetailViewPage}}

Chloe 30.01.2023 15:45

pageName может быть любым именем, так оно объявлено <ContentPage xmlns = "http://xamarin.com/schemas/2014/forms" xmlns:x = "http://schemas.microsoft.com/winfx/2009/xaml" ..... x:Name = "pageName">

Marija Magdalena Dominković 30.01.2023 15:50

Нет, я не устанавливал x:Name для страницы контента.

Chloe 30.01.2023 15:51

Попробуйте, это работает на моем коде

Marija Magdalena Dominković 30.01.2023 15:52

Огромное спасибо. Теперь он работает нормально, вы исправили мою проблему. Не могли бы вы предложить мне, какую книгу прочитать, чтобы улучшить свои навыки работы с Xamarin.Form?

Chloe 30.01.2023 16:18

Рад, что помог, но, к сожалению, у меня нет другого совета по книге, кроме того, что для меня лучший способ изучить Xamarin.Forms — это попрактиковаться и прочитать документацию (learn.microsoft.com/en-us/xamarin/xamarin-forms )

Marija Magdalena Dominković 30.01.2023 16:28

Большое спасибо за ваш совет. Но как мне нужно практиковаться? Нужно ли мне практиковать главу за главой после прочтения или создавать что-то вроде побочного проекта? Как вы считаете, как лучше всего тренироваться?

Chloe 30.01.2023 16:54

Давайте продолжим обсуждение в чате.

Marija Magdalena Dominković 31.01.2023 08:34

Другие вопросы по теме