2009-12-01 60 views
0

我在一个WPF应用程序中使用了一个DataGrid,该应用程序有几个(字面上每周的每一天一个)列,这些列只有它们的数据索引不同。下面是xaml的一个示例。wpf DataGridTextColumn重构

我该如何将它重构成更干的东西?

干杯,
Berryl

样品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用户互动,增加信息@ 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

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

但我不知道这将是一个真正的更好,更易于维护的解决方案...

+0

嗨Jalfp,并感谢为答复。这是有道理的,虽然我希望巧妙地使用风格和其他我不熟悉的WPF技术可能会更容易。 – Berryl 2009-12-02 18:02:14

+0

您可以使用定位DataGridTextColumn类型的样式并设置CellStyle,Width和CanUserResize属性。 – japf 2009-12-03 15:11:36

+0

嗨加尔夫。我尝试过没有成功;在编辑原始发布时添加了代码和评论。你可以看一下吗?干杯! – Berryl 2009-12-07 18:21:10