2012-04-27 69 views
2

我試圖找出是否有一種方法可以動態控件添加到另一個控件(我知道這是一個有點模糊......)。我的程序使用C#4.0和WPF。基本上,我試圖創建一個數據網格,但與正常類型的「單元格」(即文本,超鏈接等)相反,我需要每個單元格保存多個項目。我想這是不可能在數據網格中,所以我想要做以下事情:使用堆棧面板,添加可變數量的包裝面板。每個包裹面板將包含7個格,每個網格將持有我想要的數據(我很可能會在地方電網我想使用一些用戶控制...)動態控件 - 添加可變數量的控制

代碼的一個例子,我至今...

  <StackPanel Height="559" HorizontalAlignment="Left" Margin="24,11,0,0" Name="tyStackPanel" VerticalAlignment="Top" Width="783"> 
       <WrapPanel Height="100"> 
        <Grid Width="100" Height="100"> 

        </Grid> 
       </WrapPanel> 
       <WrapPanel Height="100"> 

       </WrapPanel> 
      </StackPanel> 

有沒有辦法創建可變數量的包裝面板呢? (即像你將不得不在DataGrid可變的行數)

任何幫助和建議,非常感謝!

P.S.圖我應該解釋我想要改善一點。我收集了一些項目,每個項目都包含5個要顯示在一起的屬性。這些項目按名稱(如數據列中的行)和列標題(不是5個屬性之一)分組。我想通過(Name,ColumnHeader)對將集合分組,然後在每個「單元格」中顯示這5個屬性。按照上面的方式設置它,每個ColumnHeader會包含一個名爲'Name'和一個Cell/Grid的WrapPanel。

+1

你真的需要閱讀ItemsControl和數據模板。 – Phil 2012-04-27 17:16:20

+0

是的,我絕對不是這方面的專家......所有...... – keynesiancross 2012-04-27 17:21:03

回答

2

WPF與ItemsControl及其各種衍生控制,其中之一是DataGrid,這實際上確實支持你正在尋找的情景支持這個非常好。

基本上,當您使用的ItemsControlDataGrid或這些項控件之一,綁定到任何屬性保存數據項的ItemsSource,並定義DataTemplate S代表每個項目,它可以是任何任意複雜的塊XAML。對於DataGrid,您可以交換DataGridTemplateColumn的普通列,而這個列可以再次像您想的那樣複雜。

退房的Data Templating Overview的,好了,一個概述。

+0

嗨Avner,謝謝你的回覆。我在哪裏可以找到一個ItemsControl,因爲我沒有在工具箱中看到它(我旁邊沒用WPF ....) – keynesiancross 2012-04-27 17:22:21

+0

我從來沒有用過工具箱,我不得不承認。我發現手動編寫XAML要快得多。尤其是隨着Visual Studio 2010對XAML的渲染緩慢。 – 2012-04-27 17:26:01