Я использую C # 7, .Net 4.7.2 и WPF 4.5.2
Я хочу отображать иерархические данные.Поэтому я использую ListBox в качестве элемента управления верхнего уровня и ListView в качестве элемента управления подуровня.Независимо от каких-либо стилей DataTemplate ListBox выглядит следующим образом:
<DataTemplate>
<Border>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{Binding SomeTextProperty}" />
<ListView Grid.Row="1" ItemsSource="{Binding SubDataClasses}"
ItemContainerStyle="{DynmicRessource MyListViewItem}" />
</Grid>
</Border>
</DataTemplate>
. В DataContext есть свойство MyDataSource, к которому привязывается ItemsSource объекта ListBox.Свойство выглядит так:
public ObservableCollection<MyMainDataClass> MyDataSource { get; set; }
И последнее, но не менее важное: классы данных:
public class MySubDataClass
{
public string SomeValue { get; set; }
}
public class MyMainDataClass
{
public string SomeTextProperty { get; set; }
public ObservableCollection<MySubDataClass> SubDataClasses { get; set; }
}
Привязки в ListBox работают нормально.Но SomeTextProperty случайно отображается правильно.Количество MySubDataClasses , принадлежащих каждому MyMainDataClass , также является правильным.
Но содержимое SomeValue даже никогда не отображается вообще.Все, что вы можете видеть, это имя класса MySubDataClass .Обычно в этом случае возникает ошибка привязки, например, имя свойства в привязке написано с ошибкой.Не в моем случае.Но что-то должно быть не так.
Я проверил привязку с помощью diag: PresentationTraceSources.TraceLevel = High .Но окно вывода Visual Studio вообще ничего не показывает.Нет информации, нет предупреждений, нет ошибок.Там нет абсолютно ничего.Та же самая трассировка на Привязке Источника ItemsS ListBox показывает все правильно.
Я также пробовал ListView отдельно в тестовом сценарии.Работает правильно.Так что в самом ListView нет ничего плохого, кроме как в качестве элемента управления ListBox.
Кто-нибудь может мне помочь, пожалуйста?
Заранее спасибо.
Добавление:
Стиль ListViewItem выглядит следующим образом
<Style x:Key="MyListViewItem" TargetType="{x:Type ListViewItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<TextBox Text="{Binding SomeValue}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>