2011-06-09 105 views
0

在我正在開發的應用程序中,我使用了一個datagrid來顯示數據庫中的數據提取。它宣稱,像這樣在我的XAML文件:在Silverlight Datagrid中添加一行控件

<sdk:DataGrid x:Name="dg" AutoGenerateColumns="False" ItemSource={Binding etc.} > 
    <sdk:DataGrid.Columns> 
     <sdk:DataGridTextBoxColumn Header="Col1" 
      Binding="{Binding Col1Data}" /> 
     <sdk:DataGridTextBoxColumn Header="Col2" 
      Binding="{Binding Col2Data}" /> 
     <sdk:DataGridTextBoxColumn Header="Col3" 
      Binding="{Binding Col3Data}" /> 
     <sdk:DataGridCheckBoxColumn Header="Col4" 
      Binding="{Binding Col4Data}" /> 
    <sdk:DataGrid.Columns> 
<sdk:DataGrid> 

我想要做什麼,是添加一行,包含頭和我的數據的第一行之間5個組合框(各1列)。使用DataGridTemplateColumn對列進行操作相當容易,但我怎樣才能做到這一點?

在此先感謝您的建議!假如編輯:哦,順便說一下,我不是背後的代碼迷(試圖去完整的MVVM),所以我正在尋找一種方法來在XAML中做到這一點,如果可能的話。

+1

MVVM並不意味着沒有代碼隱藏。如果它是特定於視圖的代碼,它在代碼隱藏方面屬於恰到好處。 XAML也是代碼。這只是聲明性的而非強制性的,通常是首選,因爲它更簡潔明瞭。 – 2011-06-10 10:33:40

+0

感謝您的澄清!我有點找到了做我想做的事的方法。我用解決方案編輯了我的帖子。 – Mathieu 2011-06-10 13:20:57

回答

0

好的,所以我找到了解決辦法。我爲我的單元格聲明瞭一個模板,其中包含一個按鈕和一個綁定到數據的文本塊。我將布爾上的按鈕的可見性屬性綁定到只有第一行元素爲true的布爾值上。

<sdk:DataGridTemplateColumn Header="Col1" Width="60"> 
    <sdk:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Vertical" Height="30"> 
      <Button Content="Boutton" Visibility="{Binding Path=IsFirstElement, Converter={StaticResource visibilityConverter}}" /> 
      <TextBlock Text="{Binding Path=Col1Data}" /> 
      </StackPanel> 
     </DataTemplate> 
    </sdk:DataGridTemplateColumn.CellTemplate> 
</sdk:DataGridTemplateColumn> 

這有點破解。但它的工作。我唯一關心的是性能,因爲每個單元都聲明瞭一個按鈕。因此,有數千行,我想可能會有性能問題。

1

您也許能夠爲標題提供模板,但如果不符合要求,則需要重新對DataGrid進行模板設置才能完成此操作。

相關問題