C# 无法在WPF中将ObservableCollection从MVVM绑定到ListView
我试图将列表视图绑定到类的可观察集合,由于某种原因,GridViewColumn的DisplayMemberBinding属性没有绑定到集合的内容。 如果我使用ListView.ItemTemplate,一切正常。但是我需要网格形式的数据,所以我在ListView.View中使用GridView 第一个图像,图像1是调试模式下的AssessmentSummaryList内容。 第二个图像,图像2是屏幕上显示的最终输出。列表中的内容未绑定到GridViewColumn 以下是我正在使用的两个视图模型:C# 无法在WPF中将ObservableCollection从MVVM绑定到ListView,c#,wpf,mvvm,C#,Wpf,Mvvm,我试图将列表视图绑定到类的可观察集合,由于某种原因,GridViewColumn的DisplayMemberBinding属性没有绑定到集合的内容。 如果我使用ListView.ItemTemplate,一切正常。但是我需要网格形式的数据,所以我在ListView.View中使用GridView 第一个图像,图像1是调试模式下的AssessmentSummaryList内容。 第二个图像,图像2是屏幕上显示的最终输出。列表中的内容未绑定到GridViewColumn 以下是我正在使用的两个视图模
public class AssessmentSummaryViewModel : BaseViewModel
{
public string Question { get; set; }
public string Title { get; set; }
public string SelectedOption { get; set; }
public int Id { get; set; }
}
public class AssessmentViewModel : BaseViewModel
{
private ObservableCollection<AssessmentSummaryViewModel> assessmentSummaryList;
public ObservableCollection<AssessmentSummaryViewModel> AssessmentSummaryList
{
get { return assessmentSummaryList; }
set
{
assessmentSummaryList = value;
NotifyPropertyChanged("AssessmentSummaryList");
}
}
public void SetNextAssessment()
{
AssessmentSummaryList= Service.GetAssessmentSummary(ApplicationModel.SelectedModule.Id,
ApplicationModel.SelectedUtility.Id); //the service returns ObservableCollection<AssessmentSummaryViewModel> data
var EndScreen = new AssessmentSummaryView(); //Setting the last screen to AssessmentSumamryView, this will be called dynamically from other UserControl Xaml Page
}
}
尝试以下方法:
<ListView ItemsSource="{Binding Path=DataContext.AssessmentSummaryList, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="Design Element" Width="200" DisplayMemberBinding="{Binding Path=Title}"/>
<GridViewColumn Header="Question" Width="400" DisplayMemberBinding="{Binding Path=Question}"/>
<GridViewColumn Header="Response" Width="300" DisplayMemberBinding="{Binding Path=SelectedOption}"/>
</GridView.Columns>
</GridView>
</ListView.View>
在我的工作中,项目列表出现了吗?如果没有,那么很可能您没有将usercontrol的datacontext绑定到vm@dnr3:我发布的代码与我在应用程序中的代码完全相同。我编辑了这个问题,以包括调试模式下列表内容的图像和屏幕上显示的最终输出。GridViewColumn没有从列表中获取内容。@dnr3:您是否必须执行任何不同的操作,或者您只是尝试了这段代码?在我的情况下,它也可以正常工作。你能试着分解问题并提供更具体的例子吗?也在这里工作。如果我是你,我会附加wpfinspector并处理binding属性,问题一定在那里。
public partial class AssessmentSummaryView : UserControl
{
public AssessmentSummaryView()
{
InitializeComponent();
}
}
<ListView ItemsSource="{Binding Path=DataContext.AssessmentSummaryList, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="Design Element" Width="200" DisplayMemberBinding="{Binding Path=Title}"/>
<GridViewColumn Header="Question" Width="400" DisplayMemberBinding="{Binding Path=Question}"/>
<GridViewColumn Header="Response" Width="300" DisplayMemberBinding="{Binding Path=SelectedOption}"/>
</GridView.Columns>
</GridView>
</ListView.View>