Comment puis-je faire de mes Colonnes de la Grille toujours être de la même largeur?

Si je définis la largeur de la Colonne à *, ils sont de la même largeur au départ, mais si un élément est plus grand que la quantité permise alors il va étendre la largeur de la colonne.

Comment puis-je forcer mon Grille de garder colonnes de la même taille avec explicitement la définition d'une taille?

Je ne peux pas utiliser un UniformGrid parce que cette Grille est utilisée dans un ItemsControl, et les Articles doivent être placés dans certains Grid.Row/Grid.Column spots

Modifier Voici un exemple de mon code actuel.

<DockPanel>

    <!-- Not showing code here for simplicity -->
    <local:ColumnHeaderControl DockPanel.Dock="Top" />
    <local:RowHeaderControl DockPanel.Dock="Left" />

    <ItemsControl ItemsSource="{Binding Events}">
        <ItemsControl.ItemContainerStyle>
            <Style>
                <Setter Property="Grid.Column" 
                        Value="{Binding DueDate.DayOfWeek, 
                            Converter={StaticResource EnumToIntConverter}}" />
            </Style>
        </ItemsControl.ItemContainerStyle>

        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                </Grid>
            </ItemsPanelTemplate>
        </ItemsPanel>
    </ItemsControl>

</DockPanel>

Edit #2 Voici ma solution finale. Il rend les colonnes de la bonne taille, et il conserve la taille correcte lors de l'application est redimensionnée.

<ColumnDefinition Width="{Binding 
    ElementName=RootControl, 
    Path=ActualWidth, 
    Converter={StaticResource MathConverter}, 
    ConverterParameter=(@VALUE-150)/7}" />

150 est la largeur de la Ligne d'en-Têtes + toutes les marges et les frontières. Je suis actuellement dans le processus de mise à jour de mon MathConverter à un IMultiValueConverter donc je peux lier les deux paramètres (Si vous êtes intéressé par le Convertisseur de code, il peut être trouvé ici, même si c'est seulement la valeur unique convertisseur)

InformationsquelleAutor Rachel | 2011-09-26