繁体   English   中英

无法在MVF中将ObservableCollection从MVVM绑定到ListView

[英]Unable to Bind ObservableCollection from MVVM to ListView in WPF

我试图将列表视图绑定到类的Observable集合,并且由于某种原因,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
    }
}

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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM