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