Можно ли получить доступ к родительскому элементу списка из дочернего представления сетки? - PullRequest
0 голосов
/ 08 мая 2020

Хорошо, у меня есть ListView с вложенным AdaptiveGridView:

<ListView Name="lvBackpacks"
                      ItemsSource="{x:Bind ViewModel.Backpacks}"
                      HorizontalAlignment="Stretch"
                      Background="Black"
                      Opacity="0.9" Margin="10"
                      SelectionMode="None"
                      DataContext="{x:Bind ViewModel}">

                <ListView.ItemTemplate>
                    <DataTemplate x:DataType="datalinks:BackpackWithItems">
                        <StackPanel Orientation="Vertical">



                            <controls:AdaptiveGridView ItemsSource="{x:Bind Items}"
                                                       OneRowModeEnabled="False"
                                                       SelectionMode="None"
                                                       DesiredWidth="200">
                                <GridView.ItemTemplate>
                                    <DataTemplate x:DataType="model:Item">
                                        <Grid>
                                            <StackPanel Orientation="Vertical"
                                                        Height="100"
                                                        HorizontalAlignment="Stretch"
                                                        Padding="5,1,5,1" 
                                                        Background="LightGray" Opacity=".80">

                                                <Grid>
                                                    <TextBlock Text="{x:Bind Title, Mode=OneWay}"
                                                               FontSize="20"
                                                               Foreground="Black"
                                                               Visibility="{Binding ElementName=lvBackpacks, Path=DataContext.IsVisible, Converter={StaticResource FalseToVisibleConverter}}"/>
                                                    <TextBox Text="{x:Bind Title, Mode=TwoWay}"
                                                             Visibility="{Binding ElementName=lvBackpacks, Path=DataContext.IsVisible, Converter={StaticResource TrueToVisibleConverter}}"/>
                                                </Grid>

                                                <Grid>
                                                    <TextBlock FontSize="15"
                                                               Text="{x:Bind Description, Mode=OneWay}"
                                                               Style="{ThemeResource CaptionTextBlockStyle}" 
                                                               Foreground="{ThemeResource SystemBaseMediumHighColor}"
                                                               Visibility="{Binding ElementName=lvBackpacks, Path=DataContext.IsVisible, Converter={StaticResource FalseToVisibleConverter}}"/>
                                                    <TextBox Text="{x:Bind Description, Mode=TwoWay}"
                                                             Visibility="{Binding ElementName=lvBackpacks, Path=DataContext.IsVisible, Converter={StaticResource TrueToVisibleConverter}}"/>
                                                </Grid>
                                                <Button CommandParameter="{x:Bind I WANT TO ACCESS THE PARENT LISTVIEW ITEM HERE}"/>
                                            </StackPanel>

                                        </Grid>
                                    </DataTemplate>
                                </GridView.ItemTemplate>

                            </controls:AdaptiveGridView>

                        </StackPanel>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

Можно ли получить текущий элемент в списке из элемента внутри gridview? Мне нужно передать элемент LV как CommandParameter.

Меня интересуют только решения, которые включают шаблон MVVM (без кода).

Если это просто невозможно, как я могу достичь этой функциональности с помощью другого подхода?

1 Ответ

0 голосов
/ 08 мая 2020

Установить DataContext для родительского элемента списка (просто написание x: Bind относится к текущему элементу).

<controls:AdaptiveGridView  Name="gvItems"
                            ItemsSource="{x:Bind Items}"
                            OneRowModeEnabled="False"
                            SelectionMode="None"
                            DesiredWidth="200"
                            DataContext="{x:Bind}">

Использование родительского элемента:

CommandParameter="{Binding ElementName=gvItems, Path=DataContext}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...