C# DisplayMemberPath未显示属性-在';ViewModel';
MyC# 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
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想引用已经存在的一个。哦,好的。我没听清楚。