2009-03-16 16 views
5

Próbuję powiązać nagłówek DataColumn z DynamicResource przy użyciu następującego kodu.Zestaw narzędzi Wpf. Przypisz nagłówek kolumny DataGrid do 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> 

Jednak z jakiegoś dziwnego powodu nagłówek kolumny pozostaje pusty. StaticResource działa jednak dobrze. Czy możesz mi pomóc, aby dowiedzieć się, jak powiązać tę właściwość Header z jakimś DynamicResource.

Odpowiedz

8

Spróbuj tego:

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

DataGrid WPF Toolkit posiada DataGridColumns które nie są kontrole wizualne, więc mają kilka fajnych przepisów. Jedną z tych zabawnych zasad jest to, że tylko powiązanie może być wiązaniem - wszystko inne musi być statyczne. Aby obejść ten problem, możesz utworzyć Statyczny materiał stylowy zawierający zawartość dynamiczną.

1

Jeśli chcesz tylko zmienić nagłówek i nie chcesz przeszkadzać stylom, zrób to. (Zasługa powyżej plakat)

<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

Spróbuj tego ...

<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

Czy go przetestować? Spróbuj przeczytać [odpowiedź]. –

3

to działa na mnie z internacjonalizacji za pomocą słowników

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

To jest poprawna odpowiedź, jeśli potrzebujesz DynamicResource i nie możesz użyć StaticResource. – gartenriese

Powiązane problemy