gpt4 book ai didi

c# - 无法将 ObservableCollection 从 MVVM 绑定(bind)到 WPF 中的 ListView

转载 作者:行者123 更新时间:2023-11-30 13:00:21 25 4
gpt4 key购买 nike

我正在尝试将 ListView 绑定(bind)到一个类的 Observable 集合,但出于某种原因,GridViewColumn 的 DisplayMemberBinding 属性未绑定(bind)到集合的内容。 如果我使用 ListView.ItemTemplate,一切正常。但是我需要网格形式的数据,所以我在 ListView.View 中使用 GridView。

First Image,Image 1是debug模式下的AssessmentSummaryList内容。Second Image,Image 2 是屏幕上显示的最终输出。列表中的内容未绑定(bind)到 GridViewColumn。

这是我正在使用的两个 View 模型:

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
}
}

AssessmentSummaryView Xaml代码如下:

<ListView x:Name="lstvSummary1" Grid.Row="2" ItemsSource="{Binding Path=DataContext.AssessmentSummaryList, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}">
<ListView.View>
<GridView ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}">
<GridViewColumn DisplayMemberBinding="{Binding Path=Title}" Width="200">
<GridViewColumnHeader Content="Design Element" />
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Path=Question}" Width="400">
<GridViewColumnHeader Content="Question" />
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Path=SelectedOption}" Width="300">
<GridViewColumnHeader Content="Response" />
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>

AssessmentSummaryView 代码隐藏如下:

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>

关于c# - 无法将 ObservableCollection 从 MVVM 绑定(bind)到 WPF 中的 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22238708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com