In my project, I have two ListView
in different ViewModels
whit same ViewCell
content. I extract this ViewCell
in other XAML
file to reuse in ListView
like this:
<views:MvxContentPage.Content>
<ScrollView x:Name="scrollList">
<StackLayout x:Name="Root">
<!-- ... -->
<repeater:RepeaterView x:Name="MainList" ShowSeparator="False"
SelectedItemCommand="{Binding SelectedCommand}"
IsVisible="True"
ItemsSource="{Binding Items}">
<repeater:RepeaterView.ItemTemplate>
<DataTemplate>
<local:ItemList FavoriteCommand="Binding path=FavCommand, Source={x:Reference MainList}}"
FavoriteCommandParameter="{Binding .}"/>
</DataTemplate>
</repeater:RepeaterView.ItemTemplate>
</repeater:RepeaterView>
<!-- ... -->
</StackLayout>
</ScrollView>
</views:MvxContentPage.Content>
...
This works perfectly to show data but when binding command in the label, it's not working.
<views:MvxViewCell
xmlns="http://xamarin.com/schemas/2014/forms"
x:TypeArguments="viewModels:ItemListViewModel"
xmlns:viewModels="clr-namespace:Template.Core.ViewModels;assembly=Template.Core"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="Template.Core.Views.ItemList"
xmlns:views="clr-namespace:MvvmCross.Forms.Views;assembly=MvvmCross.Forms"
xmlns:iconize="clr-namespace:Plugin.Iconize;assembly=Plugin.Iconize"
xmlns:Helpers="clr-namespace:Template.Core.Helpers">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="6*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Image Source="ukflag"
Grid.Row="1"
Grid.RowSpan="4"
WidthRequest="50"
HeightRequest="80"
Grid.Column="0" />
<Label Text="{Binding Nombre}"
Grid.Row="1"
Grid.Column="1"
FontAttributes="Bold"
FontSize="15" />
<Label Text="{Binding Direcciones[0].toString}"
Grid.Row="2"
Grid.Column="1"
FontSize="11" />
<iconize:IconLabel Text="fas-heart"
BackgroundColor="Transparent"
Grid.Row="1"
Grid.Column="2"
FontSize="35"
Grid.RowSpan="2"
VerticalOptions="Center">
<iconize:IconLabel.GestureRecognizers>
<TapGestureRecognizer Command="{Binding FavCommand}"
CommandParameter="{Binding .}" />
</iconize:IconLabel.GestureRecognizers>
</iconize:IconLabel>
<StackLayout Orientation="Horizontal"
Grid.Row="3"
Grid.Column="1">
<iconize:IconLabel Text="fas-map-marker-alt"
TextColor="Black"
FontSize="15" />
<Label Text="{Binding Distancia}"
FontSize="13" />
</StackLayout>
</Grid>
</views:MvxViewCell>
public partial class ItemList
{
public ItemList()
{
InitializeComponent();
}
}
Before to separate ViewCell in the file, binding works correctly but now not call ViewModel command. My idea is binding two commands from the view where it is. How can it be done? Many thanks!!
ItemList
element)? Looks like theBindingContext
is not being set properly – Diego Rafael Souza