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 中,您可以针对这种情况使用设计时资源字典文件。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 回答