2012-04-17 87 views
2

我在這個主題上看到了很多未回覆的帖子,但我仍然傾向於相信這裏有人想出了這件事,並且對我們其他人持懷疑態度。在Silverlight中綁定DataGrid列標題

我有一個DataGrid包含模板列和文本列的混合。我只需要一種將標題綁定到視圖模型中的屬性的方式,以便我可以爲不同的語言使用不同的字符串。

我看過WPF datagrid header text binding以及從它鏈接的每一篇文章。這裏建議的方法都不適用於Silverlight。

沒有人有任何想法嗎?

+0

找到答案http://blogs.claritycon.com/blog/2011/03/07/datagridcolumn-bindable-header-for-localization-support-in-silverlight-4/ – Josh 2012-04-17 19:20:38

回答

0

我最近也花了一些時間在這方面工作,這裏是我如何讓它爲其他人的利益工作。

首先聲明名稱空間向上,這樣我可以在xaml中簡短地指定它。

xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" 

然後我聲明瞭標題樣式的靜態資源往上頂,以保持數據網格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> 

然後在您的數據網格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> 

我原來的解決方案是從這個帖子:Dynamically setting the Header text of a Silverlight DataGrid Column

就收拾了一陣,因爲我有15個標題設置。