2012-10-06 1 views
2

Il s'agit du contrôle UserControl qui affiche les détails de mon application et, comme vous pouvez le voir, la propriété ColumnWidth est explicitement définie sur *. J'ai également essayé de définir la propriété Width à partir du DataGridTextColumn.Propriété DataGrid ColumnWidth ignorée dans DataTemplate pour les détails de la ligne

<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> 

Ceci est la fenêtre principale qui contient uniquement le 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> 

Ceci est affiché à l'écran lorsque vous exécutez l'application et sélectionnez une ligne dans le DataGrid parent.

DataGrid

Quand je mets la largeur de la grille de données dans le MyDetailsView à une valeur spécifiée comme 400 les colonnes sont de taille parfaite, mais ce n'est pas une option. Y a-t-il un moyen de résoudre ce problème? Une solution de contournement?

+0

Je suis également confronté au même problème. Peu importe que je donne ColumnWidth en tant que * ou valeur de toute liaison, il est simplement ignoré. Cependant, donner une valeur absolue à xaml fonctionne. – digitguy

Répondre

0

Je sais que cette question a été posée il y a environ un an, mais j'ai été confronté au même problème et je l'ai trouvé cette solution:

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

espérant qu'il sera d'aucune aide à quelqu'un.

Questions connexes