2011-02-15 78 views
1

本地化的TreeView事情是這樣的:WPF與HierarchicalDataTemplate

我有一個簡單的WPF Windows應用程序,其中我已經包含了TreeView,正在構建與HierarchicalDataTemplate的幫助,並與一些分層數據饋送。

分層數據結構由FakeRec類組成,其中包含List<FakeRec>中的子項。每個項目包含一個標題字符串屬性。 所以在我的XAML,我有:

... 
<HierarchicalDataTemplate ItemsSource="{Binding Items}" DataType="{x:Type local:FakeRec}"> 
... 
    <TextBlock Grid.Column="0" Text="{Binding Path=Title}"/> 
... 
</HierarchicalDataTemplate> 
... 

這工作得很好,而在產生TreeView我看到每個節點的標題。

現在我想讓整棵樹可以本地化。 我有我的資源在FakeDirResources.Resx(在一個單獨的程序集中,但沒關係)。 如果我這樣做:

... 
<HierarchicalDataTemplate ItemsSource="{Binding Items}" DataType="{x:Type local:FakeRec}"> 
... 
    <TextBlock Grid.Column="0" Text="{Binding Path=Title, Source={StaticResource FakeDirResources}}"/> 
... 
</HierarchicalDataTemplate> 
... 

我的樹是空白的(很明顯,因爲在我的FakeDirResources.resx文件我沒有與鍵Title的資源,但我需要使用其他具有約束力的Title,解決它通過資源,然後以某種方式將結果綁定到樹上

請注意,如果我只在窗口上放置一個TextBlock,而與樹或HierarchicalDataTemplate沒有關係,我可以將它無問題地綁定到資源上,像這樣:

<TextBlock Text="{Binding Path=games, Source={StaticResource FakeDirResources}}"/>; 

這很好,提取字符串,如果我更改System.Threading.Thread.CurrentThread.CurrentUICulture並刷新我的提供程序,此字符串將更改爲新的語言。

問題是如何將兩者結合?我錯過了什麼? 我想必須有一些訣竅(並與我短暫的WPF經驗可能不是一個簡單的伎倆)。

乾杯!

阿隆。

+0

難道我明白`Title`包含鑰匙插入`FakeDirResources`? – user7116 2011-02-15 21:22:45

回答

1

潛在的,你可以通過這個與IValueConverter工作:

public class KeyResourceConverter : IValueConverter 
{ 
    #region IValueConverter Members 

    public object Convert(object value, Type targetType, 
     object parameter, CultureInfo culture) 
    { 
     var key = System.Convert.ToString(value); 
     var lookup = parameter as ResourceManager; 

     return lookup.GetString(key, culture); 
    } 

    public object ConvertBack(object value, Type targetType, 
     object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 

    #endregion 
} 

使用像這樣:

<TextBlock Text="{Binding Path=Title, 
          Converter={StaticResource keyResource} 
          ConverterParameter={x:Static local:FakeDirResources.ResourceManager}}" 
      /> 
相關問題