更新:我目前遇到的问题是我的树视图中有两种不同类型的项目。显式创建的项目和从ItemsSource属性创建的项目。显式创建的TreeViewItems的SelectedItem属性是TreeViewItem,ItemsSource创建项的SelectedItem是对象的实例。
我试图设计一个类似于VS2015的Tools->选项窗口的窗口,我在左边有一个TreeView,右边有一个ContentPresenter(或其他一些控件?),这样我可以将ContentPresenter的DataContext绑定到TreeView的SelectedValue,然后ContentPresenter可以基于DataContext以某种方式选择它的内容。我已尝试过各种方法,但无法做到正确。
我窗口上的DataContext是此对象的一个实例
public class Settings
{
public GeneralSettings General { get; } = new GeneralSettings();
public ObservableCollection<Configuration> Configurations = new ObservableCollection<Configuration>();
public OtherSettings Other { get; } = new OtherSettings();
public class GeneralSettings
{
}
public class Configuration
{
public string Name { get; } = string.Empty;
}
public class OtherSettings
{
}
}
我希望树视图看起来像这样
一般
- Configutations
| - 配置1
| - 配置2
| - ......
| - 配置N
- 其他
所以我尝试了这个XAML:
<TreeView>
<TreeViewItem Header="General"/>
<TreeViewItem Header="Configurations" ItemsSource="{Binding Configurations}"/>
<TreeViewItem Header="Other"/>
</TreeView>
但我不确定如何将根TreeViewItems绑定到它们适当的属性。
我是否认为这一切都错了?有什么建议吗?