Data binding 在Silverlight中绑定DataGrid列标题

Data binding 在Silverlight中绑定DataGrid列标题,data-binding,silverlight-4.0,datagrid,Data Binding,Silverlight 4.0,Datagrid,我已经看到了很多关于这个话题的未获回复的帖子,但我仍然倾向于相信有人在这里发现了这一点,并坚持对我们其他人 我有一个DataGrid,它混合了模板列和文本列。我只需要一种将头绑定到viewmodel中的属性的方法,这样我就可以为不同的语言使用不同的字符串 我已经看过了,每一篇文章都有链接。这里建议的方法都不适用于Silverlight 没有人有任何想法吗 我最近也花了一些时间在这方面,下面是我如何让它为其他人的利益而工作的 首先在顶部声明名称空间,这样我可以在xaml中直接指定它 xmlns:s

我已经看到了很多关于这个话题的未获回复的帖子,但我仍然倾向于相信有人在这里发现了这一点,并坚持对我们其他人

我有一个DataGrid,它混合了模板列和文本列。我只需要一种将头绑定到viewmodel中的属性的方法,这样我就可以为不同的语言使用不同的字符串

我已经看过了,每一篇文章都有链接。这里建议的方法都不适用于Silverlight


没有人有任何想法吗

我最近也花了一些时间在这方面,下面是我如何让它为其他人的利益而工作的

首先在顶部声明名称空间,这样我可以在xaml中直接指定它

xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
然后,我将标题样式声明为静态资源,以保持datagrid xaml干净:

<navigation:Page.Resources>        
    <Style x:Key="NameStyle" TargetType="sdk:DataGridColumnHeader">
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=LocalizedStrings.Name, Source={StaticResource Language}}"/>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <Style x:Key="DescriptionStyle" TargetType="sdk:DataGridColumnHeader">
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=LocalizedStrings.Description, Source={StaticResource Language}}"/>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</navigation:Page.Resources>
然后,在datagrid xaml中,您可以简单地将DataGridTextColumns标题样式设置为静态资源标题样式

<sdk:DataGrid.Columns>
    <sdk:DataGridTextColumn Width="Auto" FontSize="11" MinWidth="100" Binding="{Binding Name}" HeaderStyle="{StaticResource NameStyle}" />
    <sdk:DataGridTextColumn Width="1*" FontSize="11" Binding="{Binding Description}" HeaderStyle="{StaticResource DescriptionStyle}" />
</sdk:DataGrid.Columns>
我最初的解决方案来自以下帖子:


只是整理了一下,因为我有15个列标题要设置

我最近也花了一些时间在这方面,下面是我如何让它为其他人的利益而工作的

首先在顶部声明名称空间,这样我可以在xaml中直接指定它

xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
然后,我将标题样式声明为静态资源,以保持datagrid xaml干净:

<navigation:Page.Resources>        
    <Style x:Key="NameStyle" TargetType="sdk:DataGridColumnHeader">
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=LocalizedStrings.Name, Source={StaticResource Language}}"/>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <Style x:Key="DescriptionStyle" TargetType="sdk:DataGridColumnHeader">
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=LocalizedStrings.Description, Source={StaticResource Language}}"/>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</navigation:Page.Resources>
然后,在datagrid xaml中,您可以简单地将DataGridTextColumns标题样式设置为静态资源标题样式

<sdk:DataGrid.Columns>
    <sdk:DataGridTextColumn Width="Auto" FontSize="11" MinWidth="100" Binding="{Binding Name}" HeaderStyle="{StaticResource NameStyle}" />
    <sdk:DataGridTextColumn Width="1*" FontSize="11" Binding="{Binding Description}" HeaderStyle="{StaticResource DescriptionStyle}" />
</sdk:DataGrid.Columns>
我最初的解决方案来自以下帖子:

只是整理了一下,因为我有15个列标题要设置

找到答案找到答案