0

ItemTemplate を使用してアイテムを表示する WPF UserControl に ListView があります。テンプレート内にはボタンがあります。ある項目を選択してから別の項目のボタンをクリックすると、以前に選択した項目がまだ選択されています。ボタンをクリックしたときに、ボタンがあるアイテムを自動的に選択する方法を知りたいです。

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() ) ) ;
}
4

2 に答える 2

0

ボタンを押すと、クリック/マウス ダウン イベントがボタンによって処理されるため、ListView コントロールにはルーティングされません。

これを解決する方法として、ボタン クリック イベントで listview.SelectedItem を手動で設定することが考えられます。

于 2009-12-19T09:32:45.880 に答える
0

送信者オブジェクトのデータ コンテキストを取得することでそれを行います。リストビューがタイプ 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
        }                                    
    }
于 2009-12-19T09:59:09.510 に答える