wpf DataGridTextColumn重构

时间:2009-12-01 00:00:49

标签: wpf datagrid dry

我在WPF应用程序中使用DataGrid,该应用程序有几个(一周中每天都有一个)列,这些列只在数据索引上有所不同。 xaml的样本如下。

如何将其重构为更干燥的东西?

干杯,
Berryl

SAMPLE XAML(七列中的两列):

<dg:DataGridTextColumn 
    Header="{Binding Source={StaticResource spy}, Path=DataContext[0].EventDate,   Converter={StaticResource dateConv}}" 
    CellStyle="{StaticResource DataEntryCellStyle}" Width="60" CanUserResize="False"
    Binding="{Binding Allocations[0].Amount, Converter={StaticResource amtConv}}"  
                               />
<dg:DataGridTextColumn 
    Header="{Binding Source={StaticResource spy}, Path=DataContext[1].EventDate, Converter={StaticResource dateConv}}" 
    CellStyle="{StaticResource DataEntryCellStyle}" Width="60" CanUserResize="False"
    Binding="{Binding Allocations[1].Amount, Converter={StaticResource amtConv}}"  
                               />

== EDITED ADD'L INFO @ JALFP ===

编译器抱怨在构建

时目标类型不是框架元素
<Style x:Key="dayOfWeekColumn" TargetType="dg:DataGridTextColumn" >
    <Setter Property="CanUserResize" Value="False"/>
    <Setter Property="CanUserSort" Value="False"/>
    <Setter Property="Width" Value="60" />
    <Setter Property="CellStyle" Value="{StaticResource dataEntryGridCellStyle}" />
</Style>

我看不到任何看起来像ColumnStyle的东西。我会在DataGridTextColumn的xaml中为此样式设置什么属性?

1 个答案:

答案 0 :(得分:1)

也许您可以创建自己的类,该类继承自DataGridTextColumn并添加新的DependencyProperty DayIndex(从0到6)。然后在这个类中,您可以进行XAML中的初始化...

但我不确定它会是一个更好,更易维护的解决方案......