У меня есть ListView
, который получает ItemTemplate
из файла ресурсов.
У меня есть словарь ресурсов, как показано ниже!
<?xml version="1.0" encoding="utf-8" ?>
<ResourceDictionary xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:ffimageloading="clr-namespace:FFImageLoading.Forms;assembly=FFImageLoading.Forms"
xmlns:common="clr-namespace:xx.Common;assembly=xx"
x:Class="xx.ResourceDictionaries.BaseHomeStyles">
<DataTemplate x:Key="ListItemTemplate">
<ViewCell>
<Grid Padding="{StaticResource ListPadding}">
<Grid.RowDefinitions>
<RowDefinition Height="1.5*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<ffimageloading:CachedImage Grid.Row="0" Aspect="Fill" DownsampleToViewSize="True" BitmapOptimizations="True"
ErrorPlaceholder = "nopreviewlandscape" LoadingPlaceholder = "loadingicon" Source="{Binding TripImage}" />
<StackLayout Grid.Row="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Text="{Binding TripName}" FontAttributes="Bold" TextColor="{StaticResource PrimaryColor}" />
<Image Grid.Column="1" Source="downarrow" Rotation="-90" BackgroundColor="{Binding PrimaryColor}"/>
</Grid>
<Label Text="{Binding ReferenceNumber}" FontAttributes="Bold"/>
<Label Text="{Binding TripUIStartDate}" />
<Label Text="{Binding DaysDetails}" TextColor="{StaticResource AppQuaternaryBackground}" />
</StackLayout>
<!--<Grid.GestureRecognizers>
<TapGestureRecognizer Command="{Binding Path=BindingContext.ToItineraryCommand, Source={x:Reference HomeList}}" CommandParameter="{Binding .}"/>
</Grid.GestureRecognizers>-->
</Grid>
</ViewCell>
</DataTemplate>
</ResourceDictionary>
Затем я использую это DataTemplate
как ItemTemplate
что-то вроде этого:
<ListView HasUnevenRows = "true" ItemsSource="{Binding CurrentTripInfo}" BackgroundColor="Transparent"
CachingStrategy="RecycleElement" x:Name="HomeList" SeparatorVisibility ="Default" Grid.Row="1" ItemTemplate="{StaticResource ListItemTemplate}" />
Я добавляю этот ResourceDictionary примерно так:
<ContentPage.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<resources:BaseHomeStyles/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</ContentPage.Resources>
Теперь я пытаюсь сделать здесь установку Click Command
в моем ViewModel
, Обычно, как я это сделал, устанавливая имя на ListView
, как у меня в приведенном выше примере, а затем использую это имя, чтобы получить BindingContext
списка, а затем используйте это, чтобы установить команду наэто, но когда я пытаюсь использовать это сейчас, он генерирует исключение синтаксического анализатора XML:
Xamarin.Forms.Xaml.XamlParseException: позиция 38:43.Не могу найти объект, на который ссылается HomeList
Теперь у меня есть два вопроса:
1- Как правильно установить команду для ListView, когда это делается выше?способ?
2- Если в будущем я планирую переместить это в App.XAML (если используется несколько раз), как я могу установить команду для него тогда?