Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何在设计时加载WPF资源字典_.net_Wpf - Fatal编程技术网

.net 如何在设计时加载WPF资源字典

.net 如何在设计时加载WPF资源字典,.net,wpf,.net,Wpf,我有一个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"

我有一个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
,以便设计者可以显示任何内容。

编辑:

在Blend中,对于这种情况,可以使用设计时资源字典文件。VisualStudio可以读取该文件,但没有创建该文件的工具。但是,如果您不害怕项目文件,您可以手动完成

  • 将文件DesignTimeResources.xaml添加到项目中
  • 打开项目文件(*.csproj)并查找DesignTimeResources.xaml文件的注册
  • 用以下代码替换此注册
  • 
    MSBuild:编译
    设计师
    真的
    
    现在,您可以合并文件中所需的所有资源字典。编译器将忽略它,但设计器不会


    有关更多详细信息,请参阅。

    因为这个问题有点老,而且很多答案都过时了:我想指出的是,Expression Blend(我不知道过去是否允许使用)支持设计时样式。对于任何前来阅读此文的人。。这会让设计器感到高兴,但实际上不应该这样做,因为它会为直接引用资源的控件的每个实例实例化一个额外的资源文件副本。此外,问题是在设计时而不是运行时加载资源字典…:|(可能是否决票)如果某人只需要在设计时使用ResourceDictionary,请查看此处:-是为我做的…;))谢谢你,丹尼Michael@claudekennilol我不能证实这一点。当我添加普通ResourceDictionary引用时,执行时间比不添加时长10倍。但是当我将
    ContainsDesignTimeResources
    设置为
    true
    时,对执行时间没有影响。我喜欢这个环境。
    <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>