Почему WPF DataGrid иногда остается горизонтально сжатым? - PullRequest
0 голосов
/ 06 августа 2011

У меня есть пользователь, который иногда видит DataGrid, который не расширяется, чтобы соответствовать его размеру: визуально сжатая сетка данных http://www.varigence.com/images/compressedDataGrid.jpg.

Я пытаюсь разгадать тайну, почему этопроисходит.Обычно, когда сетка загружается впервые, DataGrid на мгновение выглядит сжатой, но затем расширяется, чтобы заполнить соответствующее пространство.Единственное, что у меня есть, это то, что пользователь, который видит это, говорит, что он не воспроизводит, когда он отключает Aero в Windows.

Я добавил (упрощенный) фрагмент XAML, который я использую ниже.

У кого-нибудь есть идеи относительно причины?

Спасибо,

-Craig

<Grid
    AllowDrop="True"
    Background="White"
    MinHeight="400"
    MinWidth="1100"
    MaxHeight="{Binding RelativeSource={RelativeSource AncestorType={x:Type Editors:DesignerEditor}}, Path=MainWindowScrollViewer.ViewportHeight, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"
    MaxWidth="{Binding RelativeSource={RelativeSource AncestorType={x:Type Editors:DesignerEditor}}, Path=MainWindowScrollViewer.ViewportWidth, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"   
    >
    <Grid.ColumnDefinitions>
        <ColumnDefinition MinWidth="350" Width="*"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition MinWidth="250" Width="*"/>
    </Grid.ColumnDefinitions>
    <Border
        Grid.Column="0"
        BorderThickness="1"
        BorderBrush="{StaticResource headerBackgroundBrush}"
        CornerRadius="4"
        HorizontalAlignment="Stretch"
        Margin="10,10,0,10"
        VerticalAlignment="Stretch"
        >
        <Grid
            KeyboardNavigation.TabNavigation="Local"
            >
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <TextBlock
                Grid.Row="0"
                Text="Columns"
                />
            <DataGrid:SelectingDataGrid 
                x:Name="columnDataGrid"
                Grid.Row="1"
                AutoGenerateColumns="False"
                BorderBrush="{StaticResource excelBorderBrush}"
                HorizontalAlignment="Left"
                ItemsSource="{Binding ElementName=tableEditor, Path=SelectedContext.Columns.FilterCollection}"
                RowDetailsTemplateSelector="{StaticResource columnDetailsTemplateSelector}"
                RowDetailsVisibilityMode="VisibleWhenSelected"
                SelectionMode="Extended"
                SelectionUnit="FullRow"
                >
                <DataGrid:SelectingDataGrid.ItemContainerStyle>
                    <Style
                        TargetType="{x:Type DataGridRow}"
                        BasedOn="{StaticResource {x:Type DataGridRow}}"
                        >
                        <Setter
                            Property="IsSelected"
                            Value="{Binding IsSelected, Mode=TwoWay}"
                            />
                    </Style>
                </DataGrid:SelectingDataGrid.ItemContainerStyle>
                <DataGrid:SelectingDataGrid.Columns>
                    ...
                </DataGrid:SelectingDataGrid.Columns>
            </DataGrid:SelectingDataGrid>
        </Grid>
    </Border>
    <GridSplitter 
        Grid.Column="1"     
        Background="White"
        IsTabStop="False"
        ResizeBehavior="PreviousAndNext"
        Width="20" 
        />

1 Ответ

2 голосов
/ 06 августа 2011

Я предполагаю, что вы хотите, чтобы DataGrid заполнил левый столбец.Если вы измените значение

HorizontalAlignment="Left"

на

HorizontalAlignment="Stretch"

, это должно решить проблему.

...