【问题标题】:wpf DataGridTextColumn refactoringwpf DataGridTextColumn 重构
【发布时间】:2009-12-01 00:00:48
【问题描述】:

我在 WPF 应用程序中使用 DataGrid,该应用程序有几个(字面意思是一周中的每一天一个)列,这些列仅在数据索引上有所不同。下面是 xaml 的示例。

我怎样才能将它重构为更干燥的东西?

干杯,
浆果

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}}"  
                               />

== 已编辑添加信息@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 中将此样式设置为什么属性?

【问题讨论】:

    标签: wpf datagrid dry


    【解决方案1】:

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

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

    【讨论】:

    • 您好 Jalfp,感谢您的回复。这是有道理的,尽管我希望巧妙地使用我不熟悉的样式和其他 WPF 技术可能会更容易。
    • 您可以使用以 DataGridTextColumn 类型为目标的 Style 并设置 CellStyle、Width 和 CanUserResize 属性。
    • 嗨贾尔夫普。我试过这个没有成功;在原始帖子的编辑中添加了代码和 cmets。你能看看吗?干杯!
    猜你喜欢
    • 1970-01-01
    • 2015-11-08
    • 2011-06-17
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 2014-08-28
    相关资源
    最近更新 更多