2010-10-27 137 views
0

如果我將數據表綁定到WPF Toolkit-data-grid .....不需要在那裏指定列名...它會自動從datable中取出它。動態填充列表視圖

但是,如果我將一個列表視圖綁定到一個可觀察集合...我必須爲每列指定列標題名稱..在xaml文件中。

所以,如果我有列名的列表 - >List<ColumnHeaderNames> 與項目 列表一起填充 - >List<Object to populate list>

我可以綁定物品清單一覽...和列名單列出 - 查看標題...但我不知道列表視圖中是否有任何屬性...來綁定我的標題。

這意味着...

我具有其中我有2列表視圖的用戶控制...一個可用,並且另一個被選擇。我需要這個用戶控件shud是可重用的...這意味着...如果我綁定一個列表像......列表shud包含兩列......第一列名稱爲「狀態」,第二列名稱爲「縣」。但是,如果我綁定一個列表,如..然後listview shud包含3列...列名作爲水果,顏色和價格。

回答

1

我認爲最適合你的是將ListView的View屬性設置爲GridView。然後你就可以輕鬆地綁定的列標題:

<ListView ItemsSource="{Binding ListOfValues}"> 
      <ListView.View> 
       <GridView >     
        <GridViewColumn DisplayMemberBinding="{Binding XVal}" Header={binding header}"/> 
       </GridView> 
      </ListView.View> 
     </ListView> 

更多信息,你可以去那裏http://msdn.microsoft.com/en-us/library/system.windows.controls.gridview.aspx

+0

您的意思是Header = {binding header}中的「header」是列的列表。 – Relativity 2010-10-28 01:38:16

+0

如果「header」是項目列表中的項目屬性之一(例如XVal),則爲yes。否則,您可以更改Header的綁定源,但不要忘記在列表的當前項目上設置DataContext。 – Gerrrard 2010-10-28 01:45:16

+0

我在源列表中有多個列...沒有單列。我需要動態生成gridcolumns – Relativity 2010-10-28 01:46:02

0

如果你使用的包含列表和名稱的結構:< {listOfFruits,「水果」} {listofStates,「國>

然後:

<ItemsControl ItemsSource="{Binding ListOfStruct}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <ListView ItemsSource="{Binding ListOfitem}"> 
       <ListView.View> 
        <GridView> 
         <GridViewColumn DisplayMemberBinding="{Binding}" Header="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListView}, Path=DataContext.Header}"/> 
        </GridView> 
       </ListView.View> 
      </ListView> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

這是不是最好的方式,但我不知道該怎麼辦

+0

你用這種方法做了什麼?...你在創建GridView列表嗎? – Relativity 2010-10-28 03:19:34

+0

列表視圖列表視圖屬性設置爲一個gridViw,只包含一列 – Gerrrard 2010-10-28 03:38:19