2010-11-03 11 views
3

J'ai un style avec datatemplate dans la page xaml comme indiqué ci-dessous.style du datatemplate pour l'en-tête de colonne silverlight datgrid

< 

    Style x:Name="mytemplate" x:Key="mytemplate" xmlns:dataprimitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data" 
           TargetType="dataprimitives:DataGridColumnHeader"> 
       <Setter Property="ContentTemplate" > 
        <Setter.Value> 
         <DataTemplate> 
          <StackPanel Background="Aqua" Height="{Binding this.DataGridColumnHeader.Height}" Width="{Binding this.DataGridColumnHeaderWidth}" > 
     <TextBlock Text="{Binding}" HorizontalAlignment="Center" FontWeight="Black" ></TextBlock> 
           <TextBox x:Name="{Binding}" Padding="0,-1,0,0" HorizontalAlignment="Stretch" Width="100" Height="20" KeyDown="txtfilterBox_KeyDown" LostFocus="txtfilterBox_LostFocus" /> 
          </StackPanel> 
         </DataTemplate> 
        </Setter.Value> 
       </Setter> 
      </Style> 

Ce style serait appliqué au style d'en-tête de colonne de datagramme silverlight. maintenant je veux que le panneau de la pile à l'intérieur du modèle soit la même que la hauteur et la largeur de l'en-tête de colonne silverlight datgrid ? Alors, comment cela peut-il être fait?

autre façon d'étirer le modèle de contenu pour remplir tout l'espace de l'en-tête de colonne DataGrid

Répondre

2

Avez-vous essayé de définir les propriétés d'alignement horizontal et vertical du StackPanel à étirer? Vous ne devriez pas avoir besoin de lier aux propriétés Width et Height du conteneur parent.

Si vous définissez le StackPanel pour qu'il s'étire et ne fonctionne pas, il vous suffit d'envelopper le panneau de la pile dans une bordure et vous obtiendrez une couleur dorée. Voir le code ci-dessous:

<Style x:Name="mytemplate" x:Key="mytemplate" xmlns:dataprimitives="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data" 
            TargetType="dataprimitives:DataGridColumnHeader"> 
        <Setter Property="ContentTemplate" > 
         <Setter.Value> 
          <DataTemplate> 
        <Border Background="Aqua" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> 
            <StackPanel> 
          <TextBlock Text="{Binding}" HorizontalAlignment="Center" FontWeight="Black" ></TextBlock> 
             <TextBox x:Name="{Binding}" Padding="0,-1,0,0" HorizontalAlignment="Stretch" Width="100" Height="20" KeyDown="txtfilterBox_KeyDown" LostFocus="txtfilterBox_LostFocus" /> 
            </StackPanel> 
        </Border> 
          </DataTemplate> 
         </Setter.Value> 
        </Setter> 
       </Style>