Как автоматически выбрать WPF ListViewItem - PullRequest
0 голосов
/ 19 декабря 2009

У меня есть ListView в моем WPF UserControl с использованием ItemTemplate для отображения элементов. В шаблоне есть кнопка. Когда я выбираю один элемент и затем нажимаю на кнопку другого элемента, ранее выбранный элемент все еще выбран. Интересно, как автоматически выбрать элемент, в котором находится кнопка, когда кнопка нажата?

Xaml

<UserControl.Resources>
  <DataTemplate x:Key="ItemTemplate">
    <Border>
      <Grid>
        <!-- lots of stuff go here -->
        <Button Click="MyButton_Click">Clickme</Button>
      </Grid>
    </Border>
  </DataTemplate>
</UserControl.Resources>

<ListView x:Name="_listView"
  ItemTemplate="{StaticResource ItemTemplate}">
</ListView>

C # Код позади

void MyButton_Click(object sender, RoutedEventArgs e)
{
  MessageBox.Show( string.Format( "clicked on {0}",  
    this._listView.SelectedItem.ToString() ) ) ;
}

Ответы [ 2 ]

0 голосов
/ 19 декабря 2009

Я бы сделал это, получив контекст данных объекта отправителя. Предполагая, что ваш просмотр списка представляет собой список объектов типа MyObject ... тогда что-то вроде этого позволит вам ссылаться на выбранный объект.

    void MyButton_Click(object sender, RoutedEventArgs e) 
    {
        Button b = sender as Button;
        if (b == null)
        {
            return;
        }

        MyObject o = b.DataContext as MyObject;
        if (o != null)
        {
            // Put stuff for my object here
        }                                    
    }
0 голосов
/ 19 декабря 2009

Когда вы нажимаете кнопку, событие нажатия / нажатия мыши обрабатывается кнопкой и, следовательно, не направляется к элементу управления ListView.

Возможный способ решить эту проблему - вручную установить listview.SelectedItem в событии нажатия кнопки.

...