Элементы ListBox DataTemplated не реагируют на щелчки мышью - PullRequest
0 голосов
/ 23 февраля 2010

Я пытаюсь создать ListBox, в котором текст элементов привязан к свойству regionName объектов в его ItemSource. Это отображается так, как должно быть, но нажатие на текст, созданный связыванием, не меняет состояние ListBoxItem на «выбранный» (хотя нажатие на пробел после текста выбирает элемент.) ListBox работает, как и ожидалось, когда я использую DisplayMemberBinding свойство или когда я устанавливаю Content случайный статический текст в DataTemplate (щелчок по тексту выбирает ListBoxItem). Однако я бы хотел использовать конвертер для установки цвета текста для отдельных элементов (разные элементы будут разных цветов), поэтому мне кажется, что мне нужно использовать DataTemplate, который нельзя использовать вместе со свойством DisplayMemberBinding , Кто-нибудь еще сталкивался с этой проблемой?

XAML для списка:

            <ListBox x:Name="x_UpdateAreaListBox" Margin="0,0,0,10" SelectionChanged="x_UpdateAreaListBox_SelectionChanged" >
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <ListBoxItem Content="{Binding Path=regionName}"/>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

Ответы [ 2 ]

2 голосов
/ 23 февраля 2010

Замените ListBoxItem внутри Datatemplate на TextBlock или ContentControl. У самого ListBox есть сгенерированный элемент ListBox, поэтому ненужный ListBoxItem в вашей табличке данных пожирает события мыши, поэтому вы видите утомленное поведение

2 голосов
/ 23 февраля 2010

Вы захотите использовать Label или TextBlock вместо ListBoxItem. ListBox автоматически сгенерирует контейнеры для данных DataTemplated.

См. здесь для получения дополнительной информации о генерации контейнера элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...