2010-09-29 9 views
4

J'utilise une grille de données WPF pour lier un objet (c'est-à-dire pas une base de données). J'ai l'alignement horizontal sur Stretch. Je l'ai actuellement dans une frontière, qui est dans une grille.WPF Data Grid - Comment masquer la colonne/ligne suivante visible?

Cependant, lorsque j'exécute l'application, le DataGrid a une colonne vide et une grille. C'est-à-dire que j'ai 5 colonnes & 5 lignes, alors il y a une 6ème colonne vide et une ligne montrant. Voir l'image:

alt text

Question - Comment puis-je me débarrasser de ces lignes vides? Notez que le contenu du DataGrid est rempli par programme (c'est-à-dire n'est pas statique).

grâce

EDIT: je suis arrivé la ligne supplémentaire fixe (via CanUserAddRows), mais il me reste un problème avec la colonne supplémentaire à droite.

Le problème avec la colonne supplémentaire à droite semble être lié à la définition automatique des largeurs de colonnes. Le DataGrid est en fait configuré (voir XAML ci-dessous) de telle sorte qu'il y a un GridSplitter juste à droite. Lorsque je déplace le GridSplitter, je remarque que les colonnes DataGrid ne sont pas redimensionnées automatiquement. Donc globalement, le problème est à la fois (a) au démarrage, il y a une colonne supplémentaire partielle visible, et (b) après avoir déplacé le GridSplitter, ils ne sont pas redimensionnés non plus.

Des idées pour que ça fonctionne?

 <Grid> 

      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="*"/> 
      </Grid.ColumnDefinitions> 

      <Grid Grid.Column="0"> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="Auto"/> 
        <RowDefinition Height="Auto"/> 
        <RowDefinition Height="*"/> 
       </Grid.RowDefinitions> 
       <Label Content="Summary" Grid.Row="0" HorizontalAlignment="Center" /> 
       <Grid Grid.Row="1"> 
        <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="*"/> 
         <ColumnDefinition Width="*"/> 
         <ColumnDefinition Width="*"/> 
         <ColumnDefinition Width="*"/> 
        </Grid.ColumnDefinitions> 
        <RadioButton IsChecked="{Binding Path=Period, Converter={StaticResource enumBooleanConverter}, ConverterParameter=AllTime}" Grid.Column="0">All Time</RadioButton> 
        <RadioButton IsChecked="{Binding Path=Period, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Month}" Grid.Column="1">Month</RadioButton> 
        <RadioButton IsChecked="{Binding Path=Period, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Week}" Grid.Column="2">Week</RadioButton> 
        <RadioButton IsChecked="{Binding Path=Period, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Day}" Grid.Column="3">Day</RadioButton> 
       </Grid> 
       <Border Grid.Row="2"> 
        <DataGrid Name="SummaryDataGrid" HorizontalGridLinesBrush="#FF726868" VerticalGridLinesBrush="#FF726868" AlternatingRowBackground="#FFD0F896" CanUserReorderColumns="False" CanUserResizeRows="False" CanUserAddRows="False" CanUserSortColumns="True" CanUserResizeColumns="False" ColumnWidth="Auto" /> 
       </Border> 

      </Grid> 


      <GridSplitter HorizontalAlignment="Right" 
      VerticalAlignment="Stretch" Grid.Column="1" ResizeBehavior="PreviousAndNext" 
      Width="5" Background="#FFBCBCBC"/> 

      <Grid Grid.Column="2" Name="RTChartGrid"> 
       <-- CUT --> 

      </Grid> 


     </Grid> 

Répondre

0

I simplement attaché un gestionnaire chargé sur la grille de données et définir toutes les colonnes supplémentaires à une largeur de 0, et les fait caché.