我的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() ) ) ;
}
答案 0 :(得分:0)
当您按下按钮时,按钮处理您的单击/鼠标按下事件,因此不会路由到ListView控件。
解决此问题的一种可能方法是在按钮单击事件中手动设置listview.SelectedItem。
答案 1 :(得分:0)
我会通过获取sender对象的数据上下文来实现。假设您的列表视图是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
}
}