つまりね:
単純なWPFWindowsアプリケーションがあります。このアプリケーションには、いくつかの階層データを使用し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
ツリーやに関係なく、ウィンドウにaを配置するだけでHierarchicalDataTemplate
、次のように問題なくリソースにバインドできることに注意してください。
<TextBlock Text="{Binding Path=games, Source={StaticResource FakeDirResources}}"/>;
これはうまく機能し、文字列をフェッチします。System.Threading.Thread.CurrentThread.CurrentUICulture
プロバイダーを変更して更新すると、この文字列は新しい言語に変更されます。
問題は、2つをどのように組み合わせるかです。私は何が欠けていますか?いくつかのトリックが必要だと思います(そして、WPFでの私の短い経験では、それはおそらく簡単なトリックではありません)。
乾杯!
アロン。