2014-03-06 55 views
4

我試圖將列表視圖綁定到Observable集合的類,出於某種原因,GridViewColumn的DisplayMemberBinding屬性沒有綁定到集合的內容。 如果我使用ListView.ItemTemplate,一切工作正常。但是我需要網格形式的數據,所以我在ListView.View中使用了GridView。無法將ObservableCollection從MVVM綁定到WPF中的ListView

第一張圖片,圖片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(); 
    } 
} 
+2

對我的工作,項目列表是否出現?如果不是,那麼它很可能沒有將usercontrol的datacontext綁定到vm – dnr3

+0

@ dnr3:我發佈的代碼正是我在應用程序中的樣子。我編輯了這個問題,在調試模式下包含列表內容的圖像,並在屏幕上顯示最終輸出。 GridViewColumn沒有從列表中獲取內容。 – user3390374

+0

嗯,是的,你已經得到的名單,不知道這裏發生了什麼,它顯示了我的物業價值 – dnr3

回答

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> 

相關問題