2013-07-02 22 views
-2

我试图按如下方式将一个集合加载到列表框中(listbox中的一个项目包含一个图像和一个文本块)如果我点击图像外部的每个项目(区域2)选择更改正常工作(正确突出显示);但是如果通过点击每个图像来改变选择,这就需要正确工作。背后的原因是什么?
enter image description here逐项WPF listBox集合选择更改无法正常工作

<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> 
+2

我不明白你想做的事,甚至你的问题是什么? – Marc

+0

您单击按钮事件下面做什么: 私人无效ButtonBase_OnClick(对象发件人,RoutedEventArgs E) {VAR = curItem( (ListBoxItem)yourList.ContainerFromElement((Button)sender)); curItem.IsSelected = true; } – Aneef

回答

1

既然你问:

这背后的原因是什么?

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

你没有指定你想如何表现。如果你不想单击中间的图标,我猜你应该使用<ItemsControl>,如果你不想选择单个项目,或者将<Button>更改为<Image>或类似的东西, 。或者,如果您希望同时触发点击事件(按钮点击和列表项选择点击),则需要使用事件处理程序手动实现此操作。

+0

我需要同时使用clik事件和选择任何指南行来实现手动事件 – Gayan

+0

研究[路由事件](http://msdn.microsoft.com/en-us/library/ms742806.aspx)是什么。您需要为每个要处理的项目设置手动事件处理程序。 – qJake

+0

非常感谢您的提示:) – Gayan