ItemTemplate中带按钮的ListBox也应该在ButtonClick上执行选择

时间:2015-06-14 09:51:56

标签: .net wpf

我有一个带有ItemTemplate的ListBox。 在ItemTemplate中,我有一个Button和一个TextBlock。

:=

如果单击TextBlock上的ListBoxItem,也会选择ListItem, 但如果我点击按钮,则不会选择ListBoxItem。

如何在每次单击按钮时选择Buttonclick和ListBoxItem?

2 个答案:

答案 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>