在DataTemplate中忽略DataGrid ColumnWidth属性以获取行详细信息

时间:2012-10-06 10:19:30

标签: wpf datagrid datatemplate column-width

这是UserControl,它显示我的应用程序的详细信息,您可以看到ColumnWidth属性显式设置为*。我还尝试从Width设置DataGridTextColumn属性。

<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中的DataGrid的宽度设置为400这样的指定值时,列的大小完美,但这不是一个选项。有什么方法可以解决这个问题吗?解决方法?

1 个答案:

答案 0 :(得分:0)

我知道这个问题是在一年前被问到的,但是我一直面临同样的问题而且我已经找到了这个解决方案:

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

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