2012-01-19 228 views
0

模板的rowHeader和的columnHeader如何創建一個模板的rowHeader,的columnHeader,和細胞的網格?在DataGrid中在Silverlight

視圖模型可以對的rowHeader項目顯示,爲的columnHeader項目顯示對象的列表對象的列表。基本上把它想象成矩陣顯示。

可能是一個控件模板需要編寫,但運行的想法。關於此功能的文檔並不多。

任何想法?

回答

0

您可以爲DataGridColumnHeader或DataGridRowHeader創建樣式,並將ContentTemplate設置爲允許綁定Header屬性的DataTemplate。爲此,您需要一個啓用綁定的IValueConverter。

標頭是在Controls.Primitives命名空間:

xmlns:dp="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data" 

風格:

 <Style TargetType="dp:DataGridColumnHeader" > 
      <Setter Property="ContentTemplate" > 
       <Setter.Value> 
        <DataTemplate> 
         <ContentPresenter Content="{Binding Converter={StaticResource vcBC}}" /> 
        </DataTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

轉換器:

public class BindingConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if (value.GetType().Name == "Binding") 
     { 
      ContentControl cc = new ContentControl(); 
      cc.SetBinding(ContentControl.ContentProperty, value as Binding); 
      return cc; 
     } 
     else return value; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return null; 
    } 
} 

轉換器實例:

<yourassembly:BindingConverter x:Key="vcBC"/> 
+0

感謝您的迴應,部分幫助,但圍繞這個問題仍然存在很多問題。仍在尋找... – Vin

+0

好的,那麼請問你剩下的問題:-) –