当前位置: 首页 > 知识库问答 >
问题:

无法将MVVM中的ObservableCollection绑定到WPF中的ListView

斜俊
2023-03-14

我试图将列表视图绑定到类的可观察集合,由于某种原因,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 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>
public partial class AssessmentSummaryView : UserControl
{
    public AssessmentSummaryView()
    {
        InitializeComponent();
    }
}

共有1个答案

姚钊
2023-03-14

试着做一些类似的事情:

<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>
 类似资料:
  • 我有一个用户控件,其数据上下文设置为名为 EmployeeList_VM 的视图模型。然后,我在该用户控件中有一个 ContentControl,该控件将其 datacontect 设置为视图模型的公共属性 (EmployeeSelection)。ContentControl 的数据上下文与同一用户控件中列表框的选定项绑定相同。 我希望ContentControl中的combobox(属于名为Em

  • 使用Datagridtemplatecolumn将WPFDatagrid绑定到组合框。很难获得组合框绑定的selectedItem。我发现了类似的例子,但这并不能解决我的问题。 请在下面找到我的 XAML 的代码片段和数据结构: 我在上面定义了一个数据结构,它实现了INotifyPropertychanged接口。 现在,在视图模型中,有一个可观察的X列表集合,即XList,它绑定到XAML中的数

  • 如何将MVVM值绑定到dropdownlist?下面的输入元素运行良好

  • 最好的办法是什么?根据显示的数据,我希望绑定到MyText1或MyText2。我怎么做“开关”?

  • 我在这里准备了一个简单的道场:http://dojo.telerik.com/iQERE 脚本: 我在另一个数组中有一个数组,我想用剑道模板以表格/网格的形式呈现它。第一个数组的项是行,内部数组的项是列。 我在谷歌上搜索并发现了这种技术:模板中的模板 问题是: 1) 如何绑定嵌套数组项的值? 我尝试,但它不起作用。 我认为,因为使用这种技术,这个模板的“真实数据”是外部数组,而不是内部数组! 尝试

  • 在我的XAML中: 我的gridviewcolumn的可见性现在应该取决于我的集合项的“isVisible”的值。那件事可能吗?