GridSplitter以DataGrid作为左侧组件

时间:2013-12-08 15:55:12

标签: c# wpf datagrid gridsplitter

我在调整包含DataGrid的列的大小时遇到​​问题。当我为包含DataGrid的列创建更多空间时,DataGrid实际上在Width中缩小。

试图谷歌寻求解决方案,但到目前为止没有发现任何有用的东西。

XAML:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="45"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0.7*"/>
        <ColumnDefinition Width="5"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="130"/>
    </Grid.ColumnDefinitions>

    <DataGrid 
        x:Name="DowloadedEpisodesDataGrid" 
        ItemsSource="{Binding DownloadedEpisodes, Mode=OneWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}" 
        Grid.Column="0"
        AutoGenerateColumns="False"
        Background="White">

        <DataGrid.Columns>
            <DataGridCheckBoxColumn Width="50" Header="Import" Binding="{Binding IsSelected}" />
            <DataGridTextColumn Width="Auto" Header="Downloaded episode" IsReadOnly="True" Binding="{Binding FileName}"/>
        </DataGrid.Columns>
    </DataGrid>

    <GridSplitter Grid.Column="1" Width="5" Visibility="Visible" ResizeDirection="Columns" VerticalAlignment="Stretch" />

    <views:EpisodeDetailsUserControl 
        x:Name="EpisodeDetailsUserControl" 
        DataContext="{Binding ElementName=DowloadedEpisodesDataGrid, Path=SelectedItem}" 
        Grid.Column="2"
        Grid.ColumnSpan="2"/>

在调整大小之前:

enter image description here

调整大小后:

enter image description here

我想了解为什么默认行为是缩小DataGrid,当然我非常想解决这个问题。

非常感谢提前。

1 个答案:

答案 0 :(得分:3)

您需要在HorizontalAlignment -

上将Stretch设置为GridSplitter
<GridSplitter Grid.Column="1"
              ResizeDirection="Columns"
              VerticalAlignment="Stretch" 
              HorizontalAlignment="Stretch" />