Я пытаюсь связать коллекцию объектов, хранящихся в модели, с деревом в WPF. Мой XML для этого был основан на WPF Treeview Databinding Hierarchal Data with mixed types, но мне не повезло.Связывание с древовидной структурой в WPF
Мой текущий XAML выглядит так для дерева.
<TreeView Name="ConfigurationFilter">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type models:MyModel}" ItemsSource="{Binding Path=Filters.FilterType1}">
<StackPanel Orientation="Horizontal">
<CheckBox></CheckBox>
<Label Content="{Binding Path=Name}"></Label>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
У меня есть модель, которая выглядит как этот
public class MyModel
{
public Observable<MyFilter> FilterType1 {get;set;}
public Observable<MyFilter> FilterType2 {get;set;}
}
public class MyFilter
{
public string Name {get;set;}
public bool IsSelected {get;set;}
}
В пределах моего MainWindow.xaml.cs я следующее:
public partial class MainWindow : Window
{
public MyModel Filters { get; set; }
}
Свойство FilterType1 имеет 331 пунктов в нем. Но когда я запускаю приложение, привязка никогда не произойдет. Я не вижу никаких элементов в своем Treeview. Что я делаю не так?
Update 1
Я добавил мой главное окно в качестве контекста данных для TreeView и связывания, как это предлагается, но я до сих пор не имеют каких-либо элементов в дереве
<TreeView Name="ConfigurationFilter" ItemsSource="{Binding Filters}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type models:MyModel}" ItemsSource="{Binding Path=Filters.FilterType1}">
<StackPanel Orientation="Horizontal">
<CheckBox></CheckBox>
<Label Content="{Binding Path=Name}"></Label>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
и мой MainWindow.cs
public MainWindow()
{
InitializeComponent();
ConfigurationFilter.DataContext = this;
}
Я дал этот выстрел, и он до сих пор не работает. Я обновил свой вопрос, чтобы показать свой код XAML и MainWindow.cs, используя ваш пример. Ничто не представлено в пользовательском интерфейсе. Считаете ли вы, что это проблема, связанная с попыткой привязки к свойствам внутри объекта, такого как Filters.FilterType1? –
Как вы заполняете фильтры? Это не похоже на код, который будет заполнять его. –
Да, MyObject извлекается из репозитория. Репозиторий заполняет коллекции FilterType данными базы данных до возвращения объекта в MainWindow. Это происходит в методе загрузки окна –