2013-07-02 70 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