【发布时间】:2012-03-28 16:02:54
【问题描述】:
我从 Windows 8 C# XAML user and custom controls sample 开始并移动了文件
Themes/Generic.xaml
BasicCustomControl.cs
BasicUserControl.xaml
BasicUserControl.xaml.cs
ImageWithLabelControl.cs
到名为 Controls 的 Metro 类库,在 UserAndCustomControls 项目中引用它,并将 local:... 引用更正为 xmlns:local="using:Controls"。这很好用。
但是如果在类库中创建一个资源字典"Style.xaml"
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Controls">
<Color x:Key="ColorBackground">Red</Color>
</ResourceDictionary>
并包含在ScenarioList.xaml 文件中
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Controls;component/Style.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Page.Resources>
我得到一个运行时错误
XamlParseException
Failed to assign to property 'Windows.UI.Xaml.ResourceDictionary.Source'.
如果我尝试将颜色应用于网格
<Grid>
<Grid.Background>
<SolidColorBrush Color="{StaticResource ColorBackground}" />
</Grid.Background>
<ListBox x:Name="Scenarios" ...
[...]
</Grid>
[Q] 问题是,如何在 Metro 应用程序中正确声明、引用和使用外部样式?我的想法是创建作为单个 dll 文件交付的可重用控件和通用样式。
【问题讨论】:
标签: xaml windows-8 microsoft-metro