如何从其子控件访问 ListViewItem?

Wah*_*hyu 4 c# wpf listviewitem

我有一些ListViewItem来自集合的 s,我创建了一个DataTemplate ,以便每个ListViewItem都有 aButton作为子控件:

<Window.Resources>
    <DataTemplate x:Key="ItemTemplate_AwesomeTemplate">
        <StackPanel Orientation="Vertical" VerticalAlignment="Stretch">
            <Button Content="Awesome Button" Click="Awesome_Button_Click" HorizontalContentAlignment="Center" VerticalAlignment="Bottom" FontWeight="Bold" Foreground="Black"/>
        </StackPanel>
    </DataTemplate>
</Window.Resources>

<ListView x:Name="AwesomeListView" HorizontalAlignment="Left"  Height="577" VerticalAlignment="Top" Width="934" ScrollViewer.HorizontalScrollBarVisibility="Visible" Foreground="Black" Margin="10,10,0,0">
  <ListView.View>
    <GridView>
       <GridViewColumn Header="AwesomeHeader" Width="250" CellTemplate="{StaticResource ItemTemplate_AwesomeTemplate}"/>
    </GridView>
  </ListView.View>
</ListView>
Run Code Online (Sandbox Code Playgroud)

当我单击某个时Button,有没有办法更改包含单击IsSelected的属性?ListViewItemButton

Sal*_*ari 5

要更改包含单击的IsSelected 属性,您应该使用来查找项目,如下所示:ListViewItemButtonDataContext

private void Awesome_Button_Click(object sender, RoutedEventArgs e)
{
     var item = (sender as Button).DataContext;
     int index = AwesomeListView.Items.IndexOf(item);//find the index of the item that contains the clicked button
     AwesomeListView.SelectedItem = AwesomeListView.Items[index];//set the AwesomeListView's SelectedItem to item that contains the clicked button
}
Run Code Online (Sandbox Code Playgroud)