2

这是显示我的应用程序详细信息的 UserControl,如您所见,ColumnWidth属性显式设置为*. 我还尝试WidthDataGridTextColumn.

<UserControl x:Class="WpfUserInterface.MyDetailsView"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" Height="185" d:DesignWidth="480">
    <Grid>
        <DataGrid ColumnWidth="*" Margin="10">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Column1"/>
                <DataGridTextColumn Header="Column2"/>
                <DataGridTextColumn Header="Column3"/>
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</UserControl>

这是仅包含 DataGrid 的主窗口。

<Window x:Class="WpfUserInterface.Window"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window" Height="306" Width="453">
    <Grid>
        <DataGrid ColumnWidth="*">
            <DataGrid.Columns>
                <DataGridTextColumn Header="ParentColumn1"/>
                <DataGridTextColumn Header="ParentColumn2"/>
                <DataGridTextColumn Header="ParentColumn3"/>
            </DataGrid.Columns>
            <DataGrid.RowDetailsTemplate>
                <DataTemplate>
                    <MyDetailsView/>
                </DataTemplate>
            </DataGrid.RowDetailsTemplate>
        </DataGrid>
    </Grid>
</Window>

这是当您运行应用程序并在父 DataGrid 中选择一行时显示在屏幕上的内容。

数据网格

当我将 DataGrid 中的宽度设置为MyDetailsView指定值(如 400)时,列的大小非常完美,但这不是一个选项。有没有办法解决这个问题?一种解决方法?

4

1 回答 1

0

我知道大约一年前有人问过这个问题,但我一直面临同样的问题,我找到了这个解决方案:

 this.dgrData.Columns[0].Width = new DataGridLength(1, DataGridLengthUnitType.Star);
 this.dgrData.Columns[1].Width = new DataGridLength(1, DataGridLengthUnitType.Star);
 ...

希望它对某人有任何帮助。

于 2014-06-08T11:14:55.670 回答