L'en-tête de la colonne Silverlight Dispers sur l'application du modèle de style d'en-tête

StackOverflow https://stackoverflow.com/questions/4033865

  •  26-09-2019
  •  | 
  •  

Question

J'ai un Silverlight DataGrid avec deux colonnes. Les en-têtes de ces deux en-tête de colonnes doivent être affichés avec une zone de texte et un titre ou un nom d'en-tête de colonne afin que la zone de texte puisse être utilisée pour filtrer plus tard.

J'ai donc utilisé le code suivant pour afficher la zone de texte à l'aide d'un style:

<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 x:Name="ColHeaderTemplategrid">                      
               <StackPanel>                             
                   <TextBox x:Name="txtfilterBox"  KeyDown="txtfilterBox_KeyDown" Width="40"/>
               </StackPanel>
           </DataTemplate>
       </Setter.Value>
   </Setter>
</Style>

Et j'ai appliqué le style aux en-têtes de colonne comme ci-dessous:

 ((DataGridTextColumn)column[0]).HeaderStyle = mytemplate;
 ((DataGridTextColumn)column[1]).HeaderStyle = mytemplate;

Le fait est que maintenant la zone de texte est visible mais le titre ou le nom de l'en-tête de colonne disparaît?

Comment afficher mon en-tête de colonne avec la zone de texte?

Était-ce utile?

La solution

Comme vous l'avez dit, je viens d'insérer Textblock dans le stackpanel du modèle et résout le problème

Le code est 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 x:Name="ColHeaderTemplategrid">
                         <StackPanel>
                             <TextBlock Text="{Binding}" ></TextBlock>
                             <TextBox x:Name="txtfilterBox"  KeyDown="txtfilterBox_KeyDown" Width="40"/>
                        </StackPanel>

                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top