WPF listBox集合选择更改无法正常工作

WPF listBox集合选择更改无法正常工作,wpf,listbox-control,Wpf,Listbox Control,我正在尝试按如下方式将集合加载到列表框中。(列表框中的一个项目包含图像和文本块)如果我在图像外部(区域2)逐项单击每个项目,则选择“更改工作正常”(正确高亮显示);但是,如果通过单击每个图像来更改选择,则该选项将正常工作。这背后的原因是什么? 逐项 <DataTemplate x:Key="ObjectGalleryDataTemplate" DataType="{x:Type loc:ObjectTypes}" > <Button Margin="3" Wi

我正在尝试按如下方式将集合加载到列表框中。(列表框中的一个项目包含图像和文本块)如果我在图像外部(区域2)逐项单击每个项目,则选择“更改工作正常”(正确高亮显示);但是,如果通过单击每个图像来更改选择,则该选项将正常工作。这背后的原因是什么?
逐项

 <DataTemplate  x:Key="ObjectGalleryDataTemplate" DataType="{x:Type loc:ObjectTypes}" >
       <Button Margin="3" Width="80" Height="80" Click="click_object"BorderBrush="Transparent"  Tag="{Binding ObjectTypeID}">

<ItemsPanelTemplate x:Key="ObjectGalleryItemsPanelTemplate">

        <UniformGrid Rows="1"  HorizontalAlignment="Stretch"/>
        </ItemsPanelTemplate>

<StackPanel Orientation="Horizontal">
  <Grid><ListBox x:Name="ObjectTypesGallery" SelectionMode="Single" SelectionChanged="objectType_clik" BorderBrush="Transparent" SelectedIndex="0" ItemsSource="{Binding}" ItemTemplate="{DynamicResource ObjectGalleryDataTemplate}" ItemsPanel="{DynamicResource ObjectGalleryItemsPanelTemplate}">
      </ListBox>
   </Grid>
</StackPanel>

既然你问:

这背后的原因是什么

原因是列表框中的每个项目都会自动设置为可选(以便您可以选择一个或多个列表项目作为UI的一部分)。但是,由于您在列表项模板中包含了一个按钮,因此当您单击该按钮时,系统将首先响应在列表项前面单击的按钮


您没有指定希望此操作的行为方式。如果您不想选择单个项目,我想您应该使用
,或者如果您不想单击中心的图标,可以将
更改为
或类似的内容。或者,如果您希望同时触发click事件(按钮单击和列表项选择单击),则需要使用事件处理程序手动执行此操作。

我无法理解您要执行的操作,甚至无法理解您的问题所在…在按钮上,单击下面的事件执行:private void ButtonBase_OnClick(对象发送方,RoutedEventArgs e){var curItem=((ListBoxItem)yourList.ContainerRomeElement((按钮)sender));curItem.IsSelected=true;}我需要同时使用clik事件和selection执行手动事件的任何指导线搜索它们是什么。您将需要为要处理的每个项目设置手动事件处理程序。非常感谢您提供的提示:)我们是否可以使用事件隧道/冒泡来避免此问题?是的,您可以从冒泡或冒泡中取消某些类型的事件,以便单击达到您想要的目标。