更新:我目前遇到的问题是我的树视图中有两种不同类型的项目 . 显式创建的项目和从ItemsSource属性创建的项目 . 显式创建的TreeViewItems的SelectedItem属性是TreeViewItem,ItemsSource创建项的SelectedItem是对象的实例 .

我正在尝试设计一个类似于VS2015的Tools-> Options窗口的窗口,我在左边有一个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
   {
   }
}

我希望treeview看起来像这样

一般

  • Configutations
    | - Configuration1
    | - Configuration2
    | - ......
    | - ConfigurationN
  • 其他

所以我尝试了这个XAML:

<TreeView>
        <TreeViewItem Header="General"/>
        <TreeViewItem Header="Configurations" ItemsSource="{Binding Configurations}"/>
        <TreeViewItem Header="Other"/>
     </TreeView>

但我不确定如何将根TreeViewItems绑定到它们的适当属性 .

我错了吗?有什么建议?