2011-02-08 42 views
0

當嘗試使用DynamicResource作爲一個的ItemsSource爲一個ListView我的應用程序輸出錯誤:的ListView DynamicResource

Window must be the root of the tree. Cannot add Window as a child of Visual.

如果我是單獨刪除的ItemsSource,並留下該代碼,然後我不明白的錯誤,並顯示一個空的ListView。

我的ListView位於我Window.XAML如下:

<ListView Grid.Column="1" Grid.Row="8" Grid.RowSpan="4" ItemsSource="{DynamicResource tasksResponsibilitiesCollection}"> 
         <ListView.View> 
          <GridView AllowsColumnReorder="True"> 
           <GridViewColumn DisplayMemberBinding="{Binding tasksResponsibilitiesName}" Header="Tasks/Responsibility" Width="150" /> 
           <GridViewColumn Header="Member Responsible" Width="120" /> 
           <GridViewColumn Header="Qualifications" Width="110" /> 
          </GridView> 
         </ListView.View> 
        </ListView> 

的的ItemsSource是在後臺代碼中定義一個ObservableCollection。我一直在使用MSDN示例(http://msdn.microsoft.com/zh-cn/library/ms747048.aspx)作爲我的創建ListView的指南

我該如何着手將ObservableCollection出價ListView?我需要在Window.XAML的某個地方定義資源嗎?

如果有什麼我沒有涵蓋請讓我知道。

我很欣賞你的幫助,

馬特

回答

1

如果ObservableCollection被定義爲在該窗口的後臺代碼,那麼你可以使用數據綁定的屬性設置ItemsSource,像這樣:

<ListView Grid.Column="1" Grid.Row="8" Grid.RowSpan="4" ItemsSource="{Binding Path=tasksResponsibilitiesCollection, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}"> 
    <ListView.View> 
     <GridView AllowsColumnReorder="True"> 
      <GridViewColumn DisplayMemberBinding="{Binding tasksResponsibilitiesName}" Header="Tasks/Responsibility" Width="150" /> 
      <GridViewColumn Header="Member Responsible" Width="120" /> 
      <GridViewColumn Header="Qualifications" Width="110" /> 
     </GridView> 
    </ListView.View> 
</ListView> 

請注意tasksResponsibilitiesCollection必須是您窗口代碼隱藏的公共屬性。

+0

謝謝帕夫洛,這對我有用。 – Lima 2011-02-25 10:56:50

相關問題