2013-07-02 3 views
-2

Я пытаюсь загрузить коллекцию в список следующим образом (один элемент в списке содержит изображение и текстовый блок) ЕСЛИ я нажимаю каждый элемент по элементу за пределами изображения (область 2) выбор изменения работает нормально (подсветка правильно); но если изменить выбор, щелкнув каждое изображение, это нужно правильно работать. В чем причина этого?
enter image description here пункт за пунктомWPF listBox коллекции изменения выборов не работает propely

<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 е) { вар curItem = ((ListBoxItem) отправитель yourList.ContainerFromElement ((Button))); curItem.IsSelected = true; } – Aneef

ответ

1

Поскольку вы спросили:

, что является причиной этого?

Причина в том, что каждый элемент в списке автоматически выбирается (чтобы вы могли выбрать один или несколько элементов списка как часть вашего пользовательского интерфейса). Но так как вы включили кнопку в свой шаблон элемента списка, при нажатии на кнопку система реагирует на нажатие кнопки сначала перед элементом списка.

Вы не указали, как вы хотите, чтобы это было. Я бы предположил, что вы должны либо использовать <ItemsControl>, если вы не хотите, чтобы иметь возможность выбирать отдельные элементы, либо изменить <Button> на <Image> или что-то подобное, если вы не хотите, чтобы можно было щелкнуть значок в центре , Или, если вы хотите, чтобы оба события щелчка стреляли (щелчок кнопки и выбор элемента списка), вам необходимо реализовать это вручную, используя обработчики событий.

+0

Мне нужно использовать событие clik и выбрать любую направляющую линию для выполнения ручных событий. – Gayan

+0

Изучите, что [маршрутизируемые события] (http://msdn.microsoft.com/en-us/library/ms742806.aspx). Вам нужно будет настроить ручные обработчики событий для каждого элемента, который вы хотите обработать. – qJake

+0

Большое спасибо за отзыв :) – Gayan