在Wpf中正确绑定DataTemplate中的组合框

在Wpf中正确绑定DataTemplate中的组合框,wpf,data-binding,combobox,Wpf,Data Binding,Combobox,我试图将下面的组合框绑定到ObservaleCollection中的字符列表,但它不会显示任何内容。你知道为什么吗 XAML: TabControl的DataContext类型为MainVM。组合框绑定的相对资源不应该是选项卡控件,而应该是列表框您的InvCharacters属性位于文本编辑器VM对象上,该对象位于可观察集合中,但是,您的绑定引用的是TabControl.DataContext,它是MainVM,不包含该属性 将相对资源绑定切换到引用TabItem(在绑定TabControl.I

我试图将下面的组合框绑定到ObservaleCollection中的字符列表,但它不会显示任何内容。你知道为什么吗

XAML:


TabControl
DataContext
类型为
MainVM
组合框
绑定的
相对资源
不应该是
选项卡控件
,而应该是
列表框

您的
InvCharacters
属性位于
文本编辑器VM
对象上,该对象位于
可观察集合
中,但是,您的绑定引用的是
TabControl.DataContext
,它是
MainVM
,不包含该属性

将相对资源绑定切换到引用
TabItem
(在绑定
TabControl.ItemsSource
时自动创建)或
列表框
以引用
文本编辑器VM
对象

<ComboBox ItemsSource="{Binding DataContext.InvCharacters, 
              RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}">
</ComboBox>

谢谢您,由于您的示例,我在XAML中做了一些更改。我还发布了上面的T_字符类。我想我需要更改SelectedValue部分,但我不知道如何更改。你知道吗?
     class TextEditorVM: IViewModel {
         public ObservableCollection<TextLineVM> TextLines { get { return textLines; } set { textLines = value;} }
         public ObservableCollection<T_Character> InvCharacters { get { return invCharacters; } set { invCharacters = value; } }


         public TextEditorVM(T_Dialogue dialogue)
         {

             DialogueManager.Instance.Register(this);
             this.TextLines = new ObservableCollection<TextLineVM>();
             this.InvCharacters = new ObservableCollection<T_Character>();
         }
    }
     class MainVM : IViewModel
     {
           public ObservableCollection<TextEditorVM> TextEditors { get { return textEditors; } set { textEditors = value; OnPropertyChanged("TextEditors"); } 
     }
    public class T_Character
    {

       public String cid { get; set; }
       public String name { get; set; }

       public T_Character(String cid, String name)
       {
          this.cid = cid;
          this.name = name;
       }
    }
<ComboBox ItemsSource="{Binding DataContext.InvCharacters, 
              RelativeSource={RelativeSource AncestorType={x:Type TabItem}}}">
</ComboBox>