[.net] DataTemplate с TargetNullValue в ListBox


0 Answers

В приведенном ниже блоге вы найдете хорошее решение, используя Attached Property, которое хорошо работает для меня

http://danylaporte.blogspot.com/2008/07/wpf-combobox-and-null-values.html

Question

У меня есть следующий DataTemplate в Listbox

<ListBox Grid.Column="1" Grid.Row="2" ItemsSource="{Binding People}" SelectedItem="{Binding SelectedPerson}">
<ListBox.ItemTemplate>
    <DataTemplate>
        <TextBlock OverridesDefaultStyle="True"
               Background="{x:Null}"
               Margin="0"
               Padding="0"
               IsHitTestVisible="True"
               Text="{Binding TargetNullValue=None}"
        />
    </DataTemplate>
</ListBox.ItemTemplate>

Это отлично работает, показывая «Нет» вместо любых значений Null (Nothing) в списке ограничений. Проблема в том, что я не могу нажать на значения Null, чтобы выбрать их. Выбор с клавиатуры отлично работает, просто не с помощью мыши. Что я могу сделать, чтобы значения Null в списке действовали так же, как и любое другое значение?

Edit: Я также должен добавить, что я могу изменить фон TextBlock на Red, и он отображается так же, как и другие, поэтому я не думаю, что это случай, когда вам нечего нажимать. Я также посмотрел на него со Snoop, и я не вижу никаких атрибутов в визуальном дереве, которые отличаются между элементом Null и обычным элементом.

Редактировать 2: я должен добавить, что People - это фактически класс, представляющий таблицу базы данных. Он использует метод ToString для отображения объектов People по умолчанию. Я получаю тот же эффект, если я привязываюсь к правильному полю, используя параметр «Путь», и я думал, что это будет легче читать.




Related