9

次のような動的リソースとしていくつかのプロパティが定義されている WPF ウィンドウがあります。

<Window x:Class="LocSample.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        MinHeight="350" MinWidth="525"
        Title="{DynamicResource ResourceKey=ResId_Title}"
        FlowDirection="{DynamicResource ResId_FlowDirection_Default}" >
    <Grid>
       <Label Content="{DynamicResource ResId_FirstName}" />  
    </Grid>
</Window>

ResourceDictionary実行時にロードされ、ユーザーの言語選択が反映されます。また、ユーザーがその場で言語を切り替えることができるようにします。

これは実行時には正常に機能しますが、設計時にはリソース定義のプロパティは表示されません。設計時に定義されていないため、設計者がそれらを表示できないことは明らかです。

ResourceDictionaryデザイナーが何でも表示できるように、デザイン時にデフォルトをロードする方法が必要です。

4

1 に答える 1

8

編集:

Blend では、この場合に Design-time Resources Dictionary ファイルを使用できます。Visual Studio はそのファイルを読み取ることができますが、ファイルを作成するためのツールがありません。しかし、プロジェクト ファイルを恐れなければ、手動で行うことができます。

  1. ファイル DesignTimeResources.xaml をプロジェクトに追加します。
  2. プロジェクト ファイル (*.csproj) を開き、DesignTimeResources.xaml ファイルの登録を見つけます。
  3. この登録を次のコードに置き換えます
<Page Include="Properties\DesignTimeResources.xaml" Condition="'$(DesignTime)'=='true' OR ('$(SolutionPath)'!='' AND Exists('$(SolutionPath)') AND '$(BuildingInsideVisualStudio)'!='true' AND '$(BuildingInsideExpressionBlend)'!='true')">
  <Generator>MSBuild:Compile</Generator>
  <SubType>Designer</SubType>
  <ContainsDesignTimeResources>true</ContainsDesignTimeResources>
</Page>

これで、必要なすべてのリソース ディクショナリをファイルにマージできます。コンパイラはそれを無視しますが、デザイナーは無視しません。

詳細については、私の記事を参照してください。

于 2013-07-17T23:32:28.883 に答える