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

时间:2014-03-06 23:54:30

标签: c# wpf mvvm

我正在尝试将List View绑定到类的Observable Collection,并且由于某种原因,GridViewColumn的DisplayMemberBinding属性未绑定到collection的内容。     如果我使用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();
    }
}

1 个答案:

答案 0 :(得分:0)

尝试类似:

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