是否必须显式引用资源字典?

时间:2014-10-23 00:02:31

标签: xaml windows-store-apps resourcedictionary app.xaml

我在ResourceDictionary中有以下内容:

<Style x:Key="BasicStyle" TargetType="ContentControl">
    <Setter Property="Width" Value="100" />
    <Setter Property="Height" Value="30" />
</Style>
<Style x:Key="ButtonStyle" TargetType="Button" BasedOn="{StaticResource BasicStyle}">
    <Setter Property="BorderBrush" Value="Orange" />
    <Setter Property="BorderThickness" Value="2" />
    <Setter Property="Foreground" Value="Orange" />
</Style>

然后我尝试在MainPage.xaml中使用按钮样式,如下所示:

...但在运行时我得到,“无法找到名称/键ButtonStyle的资源

我是否必须正式将MainPage.xaml引入ResourceDictionary?

是否必须在MainPage或App.xaml中引用ResourceDirectionary,或者...... ???

更新

那么App.xaml中的Application.Resources的正确XML是什么?

使用下面robertos的想法,在将资源字典添加到我的项目并命名为“GlobalStylesResourceDictionary.xaml”之后,我将其添加到App.xaml:

<ResourceDictionary>
    <ResourceDictionary Source="GlobalStylesResourceDictionary.xaml" />
</ResourceDictionary>

...所以我的整个App.xaml是:

<Application x:Class="Photrax.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:Photrax">
    <Application.Resources>
        <ai:TelemetryContext x:Key="ApplicationInsightsBootstrapper" xmlns:ai="using:Microsoft.ApplicationInsights"/>
        <ResourceDictionary>
            <ResourceDictionary Source="GlobalStylesResourceDictionary.xaml" />
        </ResourceDictionary>
    </Application.Resources>
</Application>

然而,有了这个,我得到“每个字典条目必须有一个关联的密钥。”

然而,这直接来自微软(robertos从他引用的ms页面中获取了他在下面显示的XAML)。那有什么问题?

1 个答案:

答案 0 :(得分:1)

您必须使用以下内容在MainPage.xaml或App.xaml中引用ResourceDictionary:

<Application.Resources>
    <ResourceDictionary>
        <!--other resources can be here-->
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="rd1.xaml" />
            <ResourceDictionary Source="rd2.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

更多信息:MSDN reference