2012-01-19 186 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

好的,那么请问你剩下的问题:-) –