C# DisplayMemberPath未显示属性-在';ViewModel';

C# DisplayMemberPath未显示属性-在';ViewModel';,c#,wpf,xaml,C#,Wpf,Xaml,MyMainView有一个名为MainViewModel的视图模型MainViewModel创建一个对话框,我希望对话框ViewModel是已经存在的MainViewModel public ObservableCollection<MyItemViewModel> MyList { get; set; } 要从MainViewModelI创建对话框,请执行以下操作 var MyInnerDlg = new MyInnerDlgView(); MyInnerDlg.DataCont

My
MainView
有一个名为
MainViewModel
的视图模型
MainViewModel
创建一个对话框,我希望对话框ViewModel是已经存在的
MainViewModel

public ObservableCollection<MyItemViewModel> MyList { get; set; }
要从
MainViewModel
I创建对话框,请执行以下操作

var MyInnerDlg = new MyInnerDlgView();
MyInnerDlg.DataContext = this;
MyInnerDlg.ShowDialog();
在对话框中,我有一个
列表框
,我将它绑定到我的
MainViewModel

public ObservableCollection<MyItemViewModel> MyList { get; set; }
publicobservableCollection MyList{get;set;}
对话框的XAML

<Border Margin="5" BorderThickness="2">
    <ListBox ItemsSource="{Binding MyList}" DisplayMemberPath="{Binding MyList.Name}" />
</Border>

Name
属性位于
MyItemViewModel
中。使用上述代码,我得到了错误:

在MainViewModel中找不到Name属性

如何引用每个items Name属性?

尝试更改:

 <ListBox ItemsSource="{Binding MyList}" DisplayMemberPath="{Binding MyList.Name}">

致:


或者尝试添加:

 <Page.Resources>
    <local:MyItemViewModel x:Key="DataContext" />   
 </Page.Resources> 

 <ListBox DataContext="{StaticResource DataContext}" ItemsSource="{Binding MyList}" DisplayMemberPath="{Binding MyList.Name}"> </ListBox>

通常我在xaml文件本身中添加一个ViewModel

 <Page.Datacontext>
    <local:MyItemViewModel/>   
 </Page.Datacontext> 

尝试更改:

 <ListBox ItemsSource="{Binding MyList}" DisplayMemberPath="{Binding MyList.Name}">

致:


或者尝试添加:

 <Page.Resources>
    <local:MyItemViewModel x:Key="DataContext" />   
 </Page.Resources> 

 <ListBox DataContext="{StaticResource DataContext}" ItemsSource="{Binding MyList}" DisplayMemberPath="{Binding MyList.Name}"> </ListBox>

通常我在xaml文件本身中添加一个ViewModel

 <Page.Datacontext>
    <local:MyItemViewModel/>   
 </Page.Datacontext> 

DisplayMemberPath
可能不应该是
绑定
。将其更改为要显示的属性的属性名称,即
“name”



另外,一个普遍的建议是,因为你可以得到无牵连的行为。相反,请使用备份字段并删除setter。

DisplayMemberPath
可能不应是绑定。将其更改为要显示的属性的属性名称,即
“name”



另外,一个普遍的建议是,因为你可以得到无牵连的行为。相反,使用支持字段并删除setter。

在您的
列表框上尝试
DisplayMemberPath=“Name”
,但它总是尝试在MainViewModel上找到它。您的
MyItemViewModel
类是否有
Name
属性?是的。错误不应引用mainviewmodel,即使它不是。这与datacontext成为“this”有关吗?我使用的是VS2013。输出窗口始终引用父VM ie mainviewmodel,而不是MyItemViewModel。这就是整个问题所在在您的
列表框上尝试
DisplayMemberPath=“Name”
,但它总是尝试在MainViewModel上找到它。您的
MyItemViewModel
类是否有
Name
属性?是的。错误不应引用mainviewmodel,即使它不是。这与datacontext成为“this”有关吗?我使用的是VS2013。输出窗口始终引用父VM ie mainviewmodel,而不是MyItemViewModel。这就是全部问题。似乎有人用同样的建议更快了。这不会创建一个新的ViewModel吗?似乎OP想引用已经存在的一个。哦,好的。我没听清楚。似乎有人用同样的建议更快了。这不会创建一个新的ViewModel吗?似乎OP想引用已经存在的一个。哦,好的。我没听清楚。