我有一个带有ItemTemplate的ListBox。 在ItemTemplate中,我有一个Button和一个TextBlock。
:=
如果单击TextBlock上的ListBoxItem,也会选择ListItem, 但如果我点击按钮,则不会选择ListBoxItem。
如何在每次单击按钮时选择Buttonclick和ListBoxItem?
答案 0 :(得分:0)
你可以尝试使用OnPreviewButtonClick:
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<EventSetter Event="PreviewMouseDown"
Handler="ItemOnPreviewMouseDown" />
</Style>
</ListBox.ItemContainerStyle>
并在后面的代码中:
private void ItemOnPreviewMouseDown(
object sender, MouseButtonEventArgs e)
{
((ListBoxItem) sender).IsSelected = !((ListBoxItem) sender).IsSelected;
}
有关此问题的答案,请查看here。
答案 1 :(得分:0)
您不需要选择ListViewItem,您可以从Button的DataContext获取数据对象,并且您不需要来自其他行的数据,因为您无论如何都想要一个选择。
在事件处理程序中: var data =(sender as FrameworkElement).DataContext as MyData;
(旁注,据说,您是否需要选择?如果不使用ItemsControl)
要使ListViewItem在单击按钮时自行选择,您可以使用如下的ItemContainerStyle:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected"
Value="{Binding RelativeSource={RelativeSource Self}, Path=IsKeyboardFocusWithin, Mode=OneWay}" />
</Style>