2015-09-13 4 views
3

У меня есть несколько ListViewItem сек из коллекции, я создал DataTemplate так, что каждый из ListViewItem имеет Button как дочерний элемент управления:Как я могу получить доступ к ListViewItem из своего дочернего элемента управления?

<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> 

Когда я нажимаю определенный Button, есть ли способ изменить IsSelected Недвижимость в стране ListViewItem которая содержит щелчок Button?

+1

Изменить как? Выберите, отмените выбор или переключите? Если вы переключитесь, вы считаете, что вместо этого используете 'ToggleButton'? – dkozl

+0

@dkozl Я просто хочу выбрать его сэр. извините за поздний ответ. – Wahyu

ответ

2

Чтобы изменить IsSelectedсвойства в ListViewItem, который содержит нажатую Button вы должны использовать DataContext, чтобы найти этот пункт так:

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 
} 
+0

Спасибо, он работает отлично! :) – Wahyu