none
Metro应用 C++开发,应用Application.Resources其中的ResourceDictionary,可以在程序中动态指定和加载吗? RRS feed

  • 问题

  • 我们希望在不同分辨率时,加载不同的尺寸、坐标和字体大小,然后再page中,指定为静态的字典中的值

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

                    <!--
                        用于定义平台外观的共同方面的样式
                        Visual Studio 项目和项模板所必需的
                     -->
                    <ResourceDictionary Source="Common/StandardStyles.xaml"/>
                    <ResourceDictionary x:Name="CustomDict" Source="CustomDictionary.xaml"/>

                </ResourceDictionary.MergedDictionaries>

    网上搜索,大部分对ResourceDictionary的操作都是静态的,在程序中可以动态加载吗?

    在OnLaunched对CustomDict进行操作,CustomDict是nullptr?

    dict->Source如何赋值Uri?

    类似下面的方式,测试报异常

    auto dict = ref new ResourceDictionary;

     dict->Source = new Uri(Package::Current->InstalledLocation->Path + "filename");

    Application::Current->Resources->MergedDictionaries->Append(dict );

    2012年8月16日 8:35

答案

全部回复

  • 	ResourceDictionary^ resource = ref new ResourceDictionary;
    	Application::LoadComponent(resource, ref new Uri(@"ms-appx:///Dictionary.xaml"), ComponentResourceLocation::Application);
    	Application::Current->Resources->MergedDictionaries->Append(resource);


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    2012年8月20日 8:09
    版主
  • 本地资源路径如下添加可以吗?

    在App::OnLaunched中

      ResourceDictionary^ resource = ref new ResourceDictionary;
      Application::LoadComponent(resource, ref new Uri(Package::Current->InstalledLocation->Path + "/CustomDictionary1.xaml"), ComponentResourceLocation::Application);
      Application::Current->Resources->MergedDictionaries->Append(resource);

    运行到LoadComponent时报异常。

    2012年8月21日 11:19
  • ms-appx:// 就是当前应用引用目录 http://msdn.microsoft.com/en-us/library/windows/apps/hh781215.aspx

    你不能直接使用file:// 文件系统访问。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 QitaoFan 2012年8月27日 1:27
    2012年8月22日 7:59
    版主