Как связать CollectionView.EmptyView с ViewModel страницы?

Я создаю приложение с CollectionView, где я хочу, чтобы пользователь добавлял элемент в ObservableCollection, когда CollectionView пуст. Проблема в том, что я не могу понять, как выполнить привязку к ViewModel страницы. Это проект Xamarin.Forms/MvvmCross.

Я попытался установить BindingContext, но мне это не удалось.

<CollectionView.EmptyView>
    <Grid Padding="24,0">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="154" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="154" />
            <RowDefinition Height="auto" />
        </Grid.RowDefinitions>
        <pan:PancakeView
            CornerRadius="8"
            WidthRequest="154"
            HeightRequest="154"
            IsClippedToBounds="True"
            HorizontalOptions="FillAndExpand"
            BackgroundColor="#FF252525"
            VerticalOptions="FillAndExpand"
            Elevation="2">
            <pan:PancakeView.HasShadow>
                <OnPlatform
                    x:TypeArguments="x:Boolean"
                    iOS="False"
                    Android="True" />
            </pan:PancakeView.HasShadow>
            <ImageButton
                HorizontalOptions="FillAndExpand"
                Padding="50"
                VerticalOptions="FillAndExpand"
                BackgroundColor="#FF252525"
                BindingContext="{Binding .}"
                Command="{Binding AddPlaylistCommand}"
                Source="icon_plus" />
        </pan:PancakeView>
    </Grid>
</CollectionView.EmptyView>

Привязка команд не работает, я бы хотел, чтобы моя команда просто привязывалась к модели просмотра страницы.


person Rikkert    schedule 16.08.2019    source источник


Ответы (1)


Попробуй это:

 <ImageButton
            HorizontalOptions="FillAndExpand"
            Padding="50"
            VerticalOptions="FillAndExpand"
            BackgroundColor="#FF252525"
            Command="{Binding Source={x:Reference Name=myPage}, Path=BindingContext.DataContext.AddPlaylistCommand}"
            Source="icon_plus" />

Где myPage это Name вашего ContentPage.

person Rajesh Sonar    schedule 16.08.2019
comment
Можете ли вы попробовать это - {Binding Source={x:Reference Name=myPage}, Path=BindingContext.DataContext.AddPlaylistCommand} - person Rajesh Sonar; 16.08.2019
comment
Последний работает отлично! Конечно, потому что я использую MvvmCross... Большое спасибо! Если вы отредактируете исходный ответ, я поставлю вам палец вверх! - person Rikkert; 19.08.2019
comment
Отредактированный исходный ответ - person Rajesh Sonar; 19.08.2019