2012-04-25 93 views
0

我有一個WPF應用程序,其中包含一個窗口,裏面有一個DataGrid。在啓動時,DataGrid完全是空的,它的列是在運行時通過代碼創建的。WPF Stackpanel裏面的DataGrid Cell

我綁定到一個DataTable。第一個顏色是單個文本字段。我需要在每行顯示一個單元格,但是作爲一個Stackpanel,它本身包含一些UserControls。

其實我試圖先插入一個空白列作爲我的StackPanel的佔位符,然後從代碼插入一個StackPanel到每個單元格。

不幸的是我沒有得到它的原因。我不能把一個新的物品放到細胞中。有人可以幫我嗎?

最好的問候,

喬納斯

+1

請解釋更多,給我們你的代碼 – 2012-04-25 09:02:55

回答

1

嘗試使用一個DataGridTemplateColumn,那麼你可以把一個StackPanel在每個小區

+1

嗨, 如何通過代碼設置此DataGridTemplateColumn? 我發現這個例子,但我不能讓它運行:http://stackoverflow.com/questions/1104164/wpf-datagridtemplatecolumn-am-i-missing-something – redflag237 2012-04-25 08:43:44

+0

在你的xaml指定數據模板並給它是一個名字。然後在你的代碼中使用FindResource獲取數據模板。然後設置DataGridTemplateColumn的CellTemplate結果。 – 2012-04-25 08:47:54

+0

是的,DataGridTemplateColumn工作正常,我的錯誤是,我把DataTemplate放在DataGrid中,並且FindRessource無法在那裏找到它。我將它移到了Windows.Ressources標籤中,它非常完美。 我得到的另一個問題是,我如何通過代碼訪問這個甚至創建的DataGrid中的StackPanel並填充一些Objekts? – redflag237 2012-04-27 07:24:48

1

我建議設計並通過XAML佔滿DataGrid。

  • YourItems是要顯示
  • userControlColumn是你的用戶控件的附加列對象的集合
  • firstColumn是你的第一個DataGridTextColumn

    <DataGrid x:Name="myGrid" ItemsSource="{Binding YourItems}"> 
        <DataGrid.Columns> 
         <DataGridTemplateColumn x:Name="userControlColumn" Header="Column1"> 
          <DataGridTemplateColumn.CellTemplate> 
           <DataTemplate> 
            <StackPanel> 
             <ns:YourCustomControl/> 
            </StackPanel> 
           </DataTemplate> 
          </DataGridTemplateColumn.CellTemplate> 
         </DataGridTemplateColumn> 
         <DataGridTextColumn x:Name="firstColumn" Header="Columns2" Binding="{Binding YourDesiredProperty}"/> 
        </DataGrid.Columns> 
    </DataGrid>