Задать Binding для Command (переменная класса) и CommandProperty (поле объекта списка) для одного объекта (MVVM)
Такая проблема: необходимо задать команду на клик по элементу и передать в качестве параметра поле объекта из списка (все происходит внутри CollectionView)
CollectionView:
<CollectionView
WidthRequest="400"
Grid.Row="0"
Grid.Column="0"
ItemsSource="{Binding Chats}"
x:Name="layMessages"
IsVisible="true"
ZIndex="1">
<CollectionView.ItemTemplate>
<DataTemplate>
<Frame
Style="{StaticResource CardView}"
Background="#FFFFFF"
BorderColor="White">
<Frame.GestureRecognizers>
<TapGestureRecognizer Command="{Binding OpenDialog}"
CommandParameter="{Binding DialogID}"/>
</Frame.GestureRecognizers>
ViewModel:
public ObservableCollection<Models.Visual.MessageInPrivateChats> Chats
{
get => _chats;
set
{
if (_chats != value)
{
_chats = value;
OnPropertyChanged();
}
}
}
public Command OpenDialog { get; set; }
...
OpenDialog = new Command<string>(async (string DialogId) =>
{
Models.Dialog dialog = new Models.Dialog()
{
DialogID = Int32.Parse(DialogId),
Type = Constants.Server.DIALOG_TYPE_PRIVATE
};
Console.WriteLine(dialog.Title);
await Shell.Current.GoToAsync("chats/ChatForm", true, new Dictionary<string, object>
{
["Dialog"] = dialog
});
});
Не знаю, каким образом задать для одного элемента Binding переменных разного уровня, подскажите, пожалуйста.
P.S. Было бы идеально передать в качестве параметра сразу в объект из Chats, если есть такая возможность, буду рад почитать :)