2014-02-23 56 views
2

我假设这是一个简单的事情,我失踪了。当按钮被点击时,选择列表框中的行

我在我写的一个WPF应用程序中有一个ListBox。每行都有一个按钮,用于根据按钮所在的行执行简单操作。如果用户直接点击该按钮,则ListBox上的SelectedItem为空。如果我先点击该行,然后按照预期的那样单击SelectedItem行。

我希望能够在点击按钮时选中按钮所在的行。再次,我假设我缺少一些简单的东西,但我的搜索到目前为止都是空的。

+0

请稍等片刻 –

回答

3

如果你想选择ListBoxItem按钮点击ListBoxItem你可以通过将点击处理程序附加到你的按钮来做到这一点。

假设你有这样的XAML的列表框声明:

<ListBox x:Name="listBox" ItemsSource="{Binding SourceCollection}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
     <Button Content="{Binding PropertyName}" Click="Button_Click"/> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

可以从处理程序选择一个ListBoxItem:按钮的

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    ListBoxItem selectedItem = (ListBoxItem)listBox.ItemContainerGenerator. 
           ContainerFromItem(((Button)sender).DataContext); 
    selectedItem.IsSelected = true; 
} 

访问DataContext这将是相同的一个ListBoxItem。因此,你可以从ItemContainerGenerator获得容器元素,即ListBoxItem。

设置IsSelectedTrue取回listBoxItem。

相关问题