У меня есть 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 не знает о своем родителе на данном этапе, но я не знаю, как решить эту проблему. Есть идеи?
Спасибо!