由于DataGridTemplateColumn
没有一个Style
财产,有一两件事你可以做的就是创建一个附加属性
下面是一个例子:
[注:你可能需要更改以下代码以适合您的项目。]
具有附属属性的类 -
public class StyleExtensions
{
public static Style GetStyle(DependencyObject obj)
{
return (Style)obj.GetValue(StyleProperty);
}
public static void SetStyle(DependencyObject obj, Style value)
{
obj.SetValue(StyleProperty, value);
}
public static void StyleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
Style style = e.NewValue as Style;
if (style != null)
{
foreach (var s in style.Setters.OfType<Setter>())
{
d.SetValue(s.Property, s.Value);
}
}
}
// Using a DependencyProperty as the backing store for Style. This enables animation, styling, binding, etc...
public static readonly DependencyProperty StyleProperty =
DependencyProperty.RegisterAttached("Style", typeof(Style), typeof(StyleExtensions), new UIPropertyMetadata(StyleChanged));
}
的Style
定义 -
<Style x:Key="MyFirstColumn">
<Setter Property="DataGridColumn.CanUserResize"
Value="False" />
<Setter Property="DataGridColumn.CanUserSort"
Value="False" />
<Setter Property="DataGridColumn.CanUserReorder"
Value="False" />
<Setter Property="DataGridColumn.CellStyle"
Value="{StaticResource RightCellStyle}" />
</Style>
使用 -
<DataGrid>
<DataGrid.Columns>
<DataGridTemplateColumn local:StyleExtensions.Style="{StaticResource MyFirstColumn}"></DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
嗯,这听起来很琐碎。如果我想在外部资源文件/字典中声明这个“模板”?顺便说一下,我的VisualStudio抱怨DataGridTemplateColumn中没有Template属性! – Fred 2010-11-23 08:55:06