2009-03-16 12 views
5

Estoy tratando de enlazar DataColumn Header a DynamicResource usando el siguiente código.Wpf Toolkit. Enlazar encabezado de columna de DataGrid a DynamicResource

<Window.Resources> 
    <sys:String x:Key="HeaderText">Header Text</sys:String> 
</Window.Resources> 
<Grid> 
    <tk:DataGrid> 
     <tk:DataGrid.Columns> 
      <tk:DataGridTextColumn Header="{DynamicResource HeaderText}" Width="100"/> 
     </tk:DataGrid.Columns> 
    </tk:DataGrid> 
</Grid> 

Pero por algún extraño motivo, el encabezado de columna permanece vacío. StaticResource sin embargo funciona bien. ¿Podría ayudarme a averiguar cómo vincular esa propiedad de encabezado a DynamicResource?

Respuesta

8

Prueba esto:

<Window.Resources> 
    <sys:String x:Key="HeaderText">Header Text</sys:String> 
    <Style x:Key="HeaderTextStyle" TargetType="{x:Type Primitives:DataGridColumnHeader}"> 
     <Setter Property="Content" Value="{DynamicResource HeaderText}" /> 
    </Style> 
</Window.Resources> 
<Grid> 
    <tk:DataGrid> 
     <tk:DataGrid.Columns> 
      <tk:DataGridTextColumn HeaderStyle="{StaticResource HeaderTextStyle}" Width="100"/> 
     </tk:DataGrid.Columns> 
    </tk:DataGrid> 
</Grid> 

cuadrícula de datos de WPF Toolkit tiene DataGridColumns que no son controles visuales, por lo que tienen algunas reglas divertidas. Una de esas reglas divertidas es que solo la propiedad de vinculación puede ser un enlace; todo lo demás debe ser estático. Para evitar esto, puede crear un recurso de estilo estático que contenga contenido dinámico.

1

Si solo quiere cambiar el encabezado y no quiere molestarse con los estilos, hágalo. (Mérito es de cartel anterior)

<Window.Resources> 
    <sys:String x:Key="HeaderText">Header Text</sys:String> 
    <TextBlock x:Key="HeaderSR" Text="{DynamicResource HeaderText}"/> 
</Window.Resources> 
<Grid> 
    <tk:DataGrid> 
     <tk:DataGrid.Columns> 
      <tk:DataGridTextColumn Header="{StaticResource HeaderSR}" Width="100"/> 
     </tk:DataGrid.Columns> 
    </tk:DataGrid> 
</Grid> 
1

probar este ...

<DataGrid> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding InputDate,Mode=OneWay,StringFormat='{}{0:dd MMM yy}'}" Width="70" > 
      <DataGridTextColumn.Header> 
       <TextBlock Text="{DynamicResource ResourceKey=inputDate}" /> 
      </DataGridTextColumn.Header> 
     </DataGridTextColumn> 
    </DataGrid.Columns> 
</DataGrid> 
+0

¿Se han probado que? Intenta leer [respuesta]. –

3

esto funciona para mí con el uso de diccionarios de internacionalización

<DataGrid> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{x:Null}" Width="120"> 
      <DataGridTextColumn.Header> 
       <TextBlock Text="{DynamicResource gridColumnHeader1}" /> 
      </DataGridTextColumn.Header> 
     </DataGridTextColumn> 
    </DataGrid.Columns> 
</DataGrid> 
+0

Esta es la respuesta correcta si necesita un DynamicResource y no puede usar un StaticResource. – gartenriese

Cuestiones relacionadas