Задать 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, если есть такая возможность, буду рад почитать :)


Ответы (0 шт):