L'en-tête de la colonne Silverlight Dispers sur l'application du modèle de style d'en-tête
-
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?
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