El encabezado de la columna de Silverlight se elimina al aplicar la plantilla de estilo de encabezado

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

  •  26-09-2019
  •  | 
  •  

Pregunta

Tengo una luz plateada DataGrid con dos columnas. Los encabezados de estas dos columnas encabezado deben mostrarse con un cuadro de texto y título o nombre del encabezado de columna para que el cuadro de texto pueda usarse para filtrar más adelante.

Entonces, he usado el siguiente código para mostrar el cuadro de texto usando un estilo:

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

Y he aplicado el estilo a los encabezados de la columna como se muestra a continuación:

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

La cuestión es que ahora el cuadro de texto es visible pero el título o el nombre del encabezado de la columna desaparecen?

¿Cómo muestro el encabezado de mi columna junto con el cuadro de texto?

¿Fue útil?

Solución

Como dijiste, acabo de insertar Textblock en el stackpanel de la plantilla y resuelve el problema

El código está a continuación

<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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top