我试图按如下方式将一个集合加载到列表框中。(列表框中的一个项目包含一个图像和一个文本块)如果我点击图像外部的每个项目(区域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>
答案 0 :(得分:1)
因为你问:
这背后的原因是什么?
原因是列表框中的每个项目都是自动选择的(这样您就可以选择一个或多个列表项作为UI的一部分)。但是,由于您在列表项模板中包含了一个按钮,当您单击该按钮时,系统将首先响应在列表项前面单击的按钮。
您没有指定您希望这样做的方式。我猜你应该使用<ItemsControl>
,如果你不想选择单个项目,或者将你的<Button>
更改为<Image>
或类似的话,如果你不知道的话我希望能够点击中心的图标。或者,如果您希望触发两个单击事件(单击按钮,单击列表项选择),则需要使用事件处理程序手动实现此操作。