2009-03-16 40 views
5

Tôi đang cố ràng buộc tiêu đề DataColumn với DynamicResource bằng cách sử dụng mã sau đây.Bộ công cụ Wpf. Liên kết tiêu đề cột DataGrid với 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> 

Nhưng đối với một số tiêu đề cột lý do lạ vẫn trống. Tuy nhiên, StaticResource hoạt động tốt. Bạn có thể vui lòng giúp tôi tìm ra cách liên kết thuộc tính Header đó với một số DynamicResource không.

Trả lời

8

Hãy thử điều này:

<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 có DataGridColumns mà không phải là trực quan kiểm soát, vì vậy họ có một số quy tắc hài hước. Một trong những quy tắc hài hước đó là chỉ có thuộc tính Binding mới có thể là một Binding - mọi thứ khác phải tĩnh. Để phá vỡ điều này, bạn có thể tạo Tài nguyên kiểu tĩnh chứa Nội dung động.

1

Nếu bạn chỉ muốn thay đổi Tiêu đề và không muốn làm phiền với kiểu, hãy thực hiện việc này. (Tín dụng đi vào tấm áp phích trên)

<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

Hãy thử này ...

<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

Bạn đã kiểm tra nó? Thử đọc [trả lời]. –

3

này làm việc cho tôi với quốc tế sử dụng từ điển

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

Đây là câu trả lời đúng nếu bạn cần một DynamicResource và không thể sử dụng một StaticResource. – gartenriese

Các vấn đề liên quan