Я заполняю ListBox элементами из связанной модели. Во время тестирования у меня было такое:
<ListBox x:Name="SettingsHolder" Margin="5,8,5,5" ItemsSource="{Binding AllSettingItems}" Height="380" DisplayMemberPath="Display"/>
Путем привязки непосредственно к члену объектов item в ItemsSource я смог убедиться, что правильно загружаю список. Фактически, элемент Display - это просто String.Format элементов, которые я хотел бы отобразить с помощью DataTemplate. Все отлично работает. Не должно быть ничего сложного в том, чтобы определить шаблон, верно?
Итак, я определил свой шаблон данных.
<Window.Resources>
<DataTemplate x:Key="AllSettingsItemTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="140*"/>
<ColumnDefinition Width="16"/>
<ColumnDefinition Width="16"/>
<ColumnDefinition Width="16"/>
</Grid.ColumnDefinitions>
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" VerticalAlignment="Top" DataContext="{Binding Key}"/>
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" VerticalAlignment="Top" Grid.Column="1" DataContext="{Binding DevDisplay}"/>
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" VerticalAlignment="Top" Grid.Column="2" DataContext="{Binding CertDisplay}"/>
<TextBlock HorizontalAlignment="Left" TextWrapping="Wrap" VerticalAlignment="Top" Grid.Column="3" DataContext="{Binding ProdDisplay}"/>
</Grid>
</DataTemplate>
</Window.Resources>
Я удалил DisplayMemberPath.
Я заменил:
ItemTemplate="{DynamicResource AllSettingsItemTemplate}"
И теперь никакие значения не отображаются. По появлению полос прокрутки и выбираемых элементов я могу сказать, что значения AllSettingsItem привязываются, потому что я получаю правильный НОМЕР выбираемого элемента, но ничего не отображается. Это как если бы привязка к элементам элемента (Key, DevDisplay и т. Д.) Просто не происходит или, если это происходит, она не отображается.
Я пробовал Path = Key в привязке шаблона данных. Это был выстрел в темноте, так что. . .
В чем секрет? Как вообще отладить что-то подобное?
(Я использую Blend и VS2013).