2012-10-06 65 views
2

這是顯示我的應用程序的詳細信息的UserControl,您可以看到ColumnWidth屬性顯式設置爲*。我也嘗試從DataGridTextColumn中設置Width屬性。DataGrid ColumnWidth在DataTemplate中爲行細節忽略的屬性

<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指定的值的列的尺寸完美但這不是一個選項。有什麼辦法可以解決這個問題嗎?解決方法?

+0

我也面臨同樣的問題。無論我將ColumnWidth作爲*還是來自任何綁定的值,都會被忽略。但是,在xaml中給出絕對值是可行的。 – digitguy

回答

0

我知道這個問題被問大約一年前,但我一直在面臨着同樣的問題,我已經找到了此解決方案:

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

希望它可能是給別人任何幫助。