Отправка SelectedIndex ListView в ViewModel через CommandParameter - PullRequest
0 голосов
/ 24 августа 2018

после довольно долгих поисков я не нашел ответа на эту проблему.У меня есть этот ListView

<ListView x:Name="itemListView" ItemsSource="{Binding History}"  HorizontalAlignment="Stretch">
                <ListView.ItemContainerStyle>
                    <Style TargetType="ListViewItem">
                        <Setter Property="HorizontalContentAlignment"  Value="Stretch"></Setter>
                    </Style>
                </ListView.ItemContainerStyle>
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <Border Style="{StaticResource Border}" Background="{ThemeResource GradientLinear}" HorizontalAlignment="Stretch">
                            <Grid>
                                <StackPanel Orientation="Vertical" Margin="10,10,10,10" HorizontalAlignment="Left" Grid.Row="0" Grid.Column="0">
                                    <TextBlock Text="{Binding name}" />
                                    <TextBlock Text="{Binding question}" TextWrapping="Wrap"/>
                                    <TextBlock Text="{Binding vrijeme}"/>
                                </StackPanel>
                                <Button Width="50" Height="50" Opacity="0.6" Grid.Row="0" Grid.Column="1" Tag="{Binding name}"
                                        Command="{Binding ElementName=itemListView, Path=DataContext.Delete}" CommandParameter="{Binding ElementName=itemListView, Path=SelectedIndex}"
                                        HorizontalAlignment="Right">
                                    <SymbolIcon 
                                        HorizontalAlignment="Center"
                                        Width="48"
                                        Height="48"
                                        Symbol="Delete" />
                                </Button>
                            </Grid>
                        </Border>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

Возможно, проблема в этой части кода

<Button Width="50" Height="50" Opacity="0.6" Grid.Row="0" Grid.Column="1" Tag="{Binding name}"
                                        Command="{Binding ElementName=itemListView, Path=DataContext.Delete}" CommandParameter="{Binding ElementName=itemListView, Path=SelectedIndex}"
                                        HorizontalAlignment="Right">

Когда я нажимаю кнопку Button, ListViewItem, содержащий эту кнопку, не выбирается, поэтому я получаю -1 дляSelectedIndex или просто ноль, если я нацеливаюсь на SelectedItem.Кажется, что нажатие на эту кнопку оставляет ListViewItem без изменений.Если я сначала щелкаю ListViewItem и затем нажимаю кнопку, он работает, SelectedItem устанавливается в ListView, конечно, но я не могу рассчитывать, что пользователь поймет это.У меня вопрос - есть ли способ «заставить» Button отправить меня в CommandArgument SelectedItem или SelectedIndex.Я знаю, как сделать это с помощью кода, но я заинтересован в решении этой проблемы с помощью MVVM.Спасибо заранее.

...