6

ローカリゼーションにリソース ディクショナリを使用しています。wpf に次のコードがあります。

<Window x:Class="RWIS_WPF.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Title="RWIS" Height="500" Width="800" MinHeight="500" MinWidth="800">

    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Localizations/Dictionary.EN.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>

私の問題は、ウィンドウのタイトルをローカライズしたいということです{StaticResource mW_screen1}

    <Window x:Class="RWIS_WPF.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

            Title="{StaticResource IT_IS_NOT_WORKING}" Height="500" Width="800"
            MinHeight="500" MinWidth="800">

            <Window.Resources>
              <ResourceDictionary>
                <ResourceDictionary.MergedDictionaries>
                    <ResourceDictionary Source="Localizations/Dictionary.EN.xaml" />
                </ResourceDictionary.MergedDictionaries>
             </ResourceDictionary>
            </Window.Resources>
            <TextBlock Text="{StaticResource IT_IS_WORKING}"></TextBlock>

しかし、タイトルがそれを呼び出した後にリソースが定義されているため、機能していません。実行しようとするとエラーが発生します

System.Windows.Markup.XamlParseException が発生しました Message=''System.Windows.StaticResourceExtension' の値を指定すると、例外がスローされました。' 行番号 '6' および行位置 '9'。

リソースを追加した後のヘッダー、テキストで機能しています

私はC#コードでそれを呼び出そうとしましたが、成功しませんでした.
私はオプションがあることを知っています:

<Window.Title></Window.Title>

しかし、テキストや値のような引数はありません。どこに置くことができますかText="{StaticResource IT_IS_WORKING}"

4

2 に答える 2

6

StaticResourceBAML (コンパイルされた XAML) のメモリへの読み込み時に適用され、parses XAML from top to bottomリソースがまだ作成されていないため、XAML の読み込み中にエラーがスローされます。

代わりに、DynamicResourceあなたが言うことができる遅延ロードされたバージョンを使用してみてください。ターゲット プロパティに式オブジェクトを割り当てます。これにより、実行時に必要になるまでリソースの検索が延期されます。

さらに明確にするためにこれを読んでください - StaticResource V/S DyanamicResource

<Window Title="{DynamicResource IT_WILL_WORK}"/>
于 2013-11-07T20:16:09.607 に答える
5

のより詳細な定義を使用してくださいStaticResource:

xmlns:System="clr-namespace:System;assembly=mscorlib"

...

<Window.Resources>
    <System:String x:Key="Title">Some Title</System:String>
    ...
</Window.Resources>
<Window.Title>
    <StaticResource ResourceKey="Title" />
</Window.Title>
于 2013-11-07T16:00:07.607 に答える