为什么WPF DataGrid有时会保持水平缩小?

时间:2011-08-05 22:51:08

标签: wpf wpfdatagrid

我有一个用户有时会看到一个DataGrid,它不会扩展以适应其空间:visually squeezed data grid http://www.varigence.com/images/compressedDataGrid.jpg

我正在寻找解决为什么会发生这种情况的谜团。通常,当Grid首次加载时,DataGrid会暂时缩小,但随后会展开以填充适当的空间。我唯一的领导是,看到这个的用户表示,当他在Windows中禁用Aero时,它不会重现。

我添加了一个(简化的)我正在使用的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 个答案:

答案 0 :(得分:2)

我假设您希望DataGrid填满左栏。如果你改变了

HorizontalAlignment="Left"

HorizontalAlignment="Stretch"

它应该解决问题。