2010-09-27 3 views
4

J'ai ceci:Saving Position GridSplitter

 <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="50*" /> 
      <ColumnDefinition Width="5" /> 
      <ColumnDefinition Width="50*" /> 
     </Grid.ColumnDefinitions> 
     <GridSplitter Background="{x:Static SystemColors.ControlBrush}" 
      Grid.Column="1" 
      Margin="0,0,0,0" 
      Name="splitter" 
      HorizontalAlignment="Stretch" /> 

J'essaie de sauvegarder et de restaurer la position de séparation. J'utilise grid.ColumnDefinitions[0].Width, qui renvoie la largeur de la colonne en pixels.

Lorsque je restaure la position, comment puis-je restaurer ET conserver le paramètre 50 *, de sorte que lorsque vous redimensionnez la fenêtre, la colonne se redimensionne correctement?

Répondre

9

La largeur propriété n'est pas simple double, il est un objet System.Windows.GridLength qui contient la valeur propriété (double) et un GridUnitType propriété (GridUnitType) qui est un enum. Donc, pour régler votre largeur de colonne à 50 *:

grid.ColumnDefinitions[0].Width = new GridLength(50, GridUnitType.Star) 

Pour enregistrer et restaurer tout ce que vous devez faire est de sauver la valeur et la GridUnitType pour chaque colonne.

Espérons que ça aide.

+0

Ma question est pourquoi la valeur de largeur est-elle composée d'un double? Cela rend la sérialisation encore plus difficile en raison d'erreurs d'arrondi. – Krythic