0

我正在尝试基于 Oreilly 的开发 Windows 8 书创建一个 Metro 应用程序。

我有以下代码,基于空白的地铁模板

Type rootType = typeof(DependencyObject); 
TypeInfo rootTypeInfo = typeof(DependencyObject).GetTypeInfo(); 
List<Type> classes = new List<Type>(); 
Brush highlightBrush; 

public MainPage()
{
    this.InitializeComponent();
    highlightBrush = this.Resources["ControlHighlightBrush"] as Brush;    

最后一行抛出此异常。据我了解,它将在公共文件夹中搜索 ControlHighlightBrush 但如果它不存在于 StandardStyles.xaml 文件中,它不会工作吗?

我想那是怎么回事?

mscorlib.dll 中出现“System.Runtime.InteropServices.COMException”类型的异常,但未在用户代码中处理

附加信息:对 COM 组件的调用已返回错误 HRESULT E_FAIL。

如果有这个异常的处理程序,程序可以安全地继续。

4

1 回答 1

3

我认为默认情况下它不会在任何公共文件夹中查找资源。资源必须在 MergedDictionary 集合的 App.xaml 中明确指定:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>

            <!-- 
                Styles that define common aspects of the platform look and feel
                Required by Visual Studio project and item templates
             -->
            <ResourceDictionary Source="Common/StandardStyles.xaml"/>
            <ResourceDictionary Source="Common/CustomStyles.xaml"/>
        </ResourceDictionary.MergedDictionaries>

        <!-- Application-specific resources -->

        <x:String x:Key="AppName">My App</x:String>
    </ResourceDictionary>
</Application.Resources>

因此,您可以在 CustomStyles.xaml 等文件中添加自定义样式,并将其包含在上面。

于 2012-06-06T01:09:31.850 回答