2009-12-01 95 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

相關問題