0

我的 WPF UserControl 中有一个 ListView,使用 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() ) ) ;
}
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 回答