Xamarin Forms - LoadFromXaml и ссылки, содержащие страницу - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть ListView, который находится на ContentPage, и я хочу, чтобы ItemTemplate ListView был определяемым пользователем, то есть синтаксический анализ XAML для шаблона во время выполнения. Тем не менее, мне нужно дать пользователю возможность иметь кнопку, которая вызывает команду на странице. См. Ниже XAML;

 <SwipeView>
<SwipeView.RightItems>
    <SwipeItems>
        <SwipeItem
                            Text = ""Delete""
                            BackgroundColor=""Red""
                            Command=""{Binding Path=ItemDeletedCommand, Source={x:Reference multiEntryPage}}""
                            CommandParameter=""{Binding .}"" />
    </SwipeItems>
</SwipeView.RightItems>
<SwipeView.Content>
                ...
</SwipeView.Content>

А моя страница контента имеет атрибут x: Name = "multiEntryPage" в своем элементе ContentPage. Код, который я использую для синтаксического анализа XAML, показан здесь:

listView.ItemTemplate = new DataTemplate(() => new ViewCell().LoadFromXaml(xaml));

Однако, это дает следующую ошибку:

{Xamarin.Forms.Xaml.XamlParseException: Position 11: 33. Не удается найти объект, на который ссылается multiEntryPage в Xamarin.Forms.Xaml.ApplyPropertiesVisitor.ProvideValue (System.Object & value, узел Xamarin.Forms.Xaml.ElementNode, источник System.Object, свойство Xamarin.Forms.Xaml.XmlNameName). ..

Так что я думаю, что довольно ясно, что ошибка происходит, потому что XAML SwipeView не знает о своем родителе на данном этапе, но я не знаю, как решить эту проблему. Есть идеи?

Спасибо!

1 Ответ

0 голосов
/ 16 апреля 2020

Создать DataTemplate можно следующими способами:

  • Создание встроенного шаблона данных

  • Создание шаблона данных с типом

  • Создание шаблона данных в качестве ресурса

См. https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/templates/data-templates/creating.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...