7

次のコードを使用して、DataColumn ヘッダーを 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>

しかし、奇妙な理由で、列ヘッダーは空のままです。ただし、 StaticResource はうまく機能します。その Header プロパティを DynamicResource にバインドする方法を教えてください。

4

4 に答える 4

9

これを試して:

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

WPF Toolkit の DataGrid には、Visual コントロールではない DataGridColumns があるため、面白いルールがいくつかあります。これらの面白い規則の 1 つは、Binding プロパティのみが Binding になることができるということです。それ以外はすべて静的でなければなりません。これを回避するには、動的コンテンツを含む静的スタイル リソースを作成します。

于 2009-07-09T05:31:46.443 に答える
9

これは、辞書を使用した国際化で機能します

<DataGrid>
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{x:Null}" Width="120">
            <DataGridTextColumn.Header>
                <TextBlock Text="{DynamicResource gridColumnHeader1}" />
            </DataGridTextColumn.Header>
        </DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>
于 2014-11-09T20:43:04.667 に答える
2

ヘッダーを変更したいだけで、スタイルを気にしたくない場合は、これを行います。(クレジットはポスターの上にあります)

    <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>
于 2010-04-27T11:56:19.203 に答える
1

これを試して...

<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>
于 2013-03-17T02:55:04.770 に答える