2009-12-01 7 views
0

J'utilise un DataGrid dans une application WPF qui a plusieurs colonnes (littéralement un pour chaque jour de la semaine) qui ne diffèrent que par leur index de données. Un échantillon du xaml est ci-dessous.wpf Refonte de DataGridTextColumn

Comment puis-je refactoriser ceci en quelque chose de plus SEC?

Cheers,
Berryl

EXEMPLE XAML (deux des sept colonnes):

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

== ÉDITÉ ADD'L INFO @ JALFP ===

compilateur se plaint que la cible le type n'est pas un élément de structure lors de la construction

<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> 

Je ne vois rien qui ressemble à un ColumnStyle non plus. Quelle propriété dois-je définir ce style dans le xaml pour DataGridTextColumn?

Répondre

1

Peut-être que vous pouvez créer votre propre classe qui hérite de DataGridTextColumn et ajouter un nouveau DependencyProperty DayIndex (de 0 à 6). Ensuite, dans cette classe que vous pourriez à l'initialisation que vous faites dans le XAML ...

Mais je ne suis pas sûr que ce sera une solution vraiment mieux et plus maintenable ...

+0

Salut Jalfp, et merci pour la réponse. Cela a du sens, bien que j'espérais une utilisation intelligente des styles et d'autres techniques WPF que je ne connais pas encore pourrait être plus facile. – Berryl

+0

Vous pouvez utiliser un style qui cible le type DataGridTextColumn et définir la propriété CellStyle, Width et CanUserResize. – japf

+0

Salut Jalfp. J'ai essayé cela sans succès; ajout de code et de commentaires lors de la modification de l'affichage d'origine. Pouvez-vous s'il vous plaît jeter un oeil? À votre santé! – Berryl