silverlight for windows embedded 当中资源的使用

 

开始时间

10:24 2010-9-29

环境:


开发环境:VS2008 +XAML2CPP.EXE + SWE 2 + BLEND 2
运行环境:WINCE 6.0 R3
硬件加速: DirectX

随笔写作过程说明:


    一边写代码,一边看MSDN,一边GOOGLE,一边用记事本 将此过程当中的问题,灵感,记录下来。

参考资料:


PAGE:
 http://msdn.microsoft.com/en-us/library/ee501893.aspx
 http://msdn.microsoft.com/en-us/library/ee501852.aspx

资源其分为:


局部资源


    作用范围:作用于单个XAML
    定义格式:定义在用户控件当中
        <UserControl.Resources>
            。。。
        </UserControl.Resources>

全局资源


    作用范围:作用于整个项目的所有XAML文件
    定义格式:定义在APP.XAML当中
        <Application.Resources>
            。。。
        </Application.Resources>

操作示例

局部资源的使用

在PAGE.XAML 定义了一个用户控件:MediaPlayer
       3

其的资源如下图所示:
        4

先讲一下示例代码,然后再解释:
要求完成功能:改变字体的颜色
要求使用BrushForeground资源来设置文本BUFFERING 的Forground.

如图:
先:
1

后:

2

代码:

IXRResourceDictionary* Resources;
this->MediaPlayer->GetResources(&Resources);
IXRBrush* brush;
Resources->GetItem( L"BrushForeground", &brush);
this->BufferBlock->SetForeground(brush);

全局资源的使用


在APP.XAML当中定义的资源如下图:
5

要求使用lrcBK资源来设置文本BUFFERING 的Forground.
效果图

3_1

 
步骤:

1. 一个加载APP.XAML文件。
2. 得到管理资源的对象。
3. 通过相应资源的KEY访问对象,以得到资源VALUE.

代码:

    IXRResourceDictionary* pResourceDictionary;
    XRXamlSource Source;
    Source.SetResource(hInstance,TEXT("XAML"),IDR_XAML_App);
    if(FAILED(retcode = app->LoadResourceDictionary(&Source, &pResourceDictionary)))
        return retcode;
    if(FAILED(retcode = app->GetResourceDictionary(&pResourceDictionary)))
        return retcode;

 

    this->pGlobalResourceDictionary->GetItem( L"lrcBK", &brush);


    this->BufferBlock->SetForeground(brush);

理论部分:


资源部分


    IXRResourceDictionary 其是用户管理资源的,从其的命名当中,可以知道MS的SWE开发使用词典来表达与存储资源。注意:词典当中存储的是资源对象,而不是资源对象的值,访问是通过在XAML当中定义的x:Key。
如:


<SolidColorBrush x:Key="BrushForeground" Color="#FF00B1E7"/>

 

当XAML RUNTIME( xaml的解析引擎)解析此名的时候,其是会生成一个对象 IXRSolidColorBrush且用Color 的值来初始化IXRSolidColorBrush. 然后此对象与Key组成一对存放到词典(IXResourceDictionary)当中。

控件部分


    MS的SWE开发人员对于界面所涉及到的控件是怎么样处理的呢,界面当中的控件之间是存在一种一对多的关系,使用树形结构来表达与实现。
    IXRVisualHost,其是用于管理总个界面的UI控件。以后我们要访问整个界面的控件,都是要通过IXRVisualHost。

控件与资源部分


    资源是为控件使用而存在的。一个控件其是可以有许多的资源的,其之间存在一种一对多的关系,MS的SWE开发人员:其使用一个专业对象:IXResourceDictionary来管理资源,而控件只要管理IXResourceDictionary就可以了,其之间使用了组合模式,控件对象当中包含IXResourceDictionary的引用,以后我们是通过此引用来访问控件所拥有的资源。

访问控件与资源的方式


    我们要访问资源,其是要通过IXResourceDictionary,IXResoureDictionary其是可以用来访问资源的。如我们访问一个控件的资源,或为这个控件添加新的资源。

操作步骤:

1. 得到控件的对象
2. 得到控件对象当中的IXResourceDictionary的引用。
3. 通过IXResourceDictionary 来完成对象的操作。

小结


    MS的SWE开发人员其对于界面的设计是怎么样思考的。
    是怎么样处理
        控件与控件之间的关系
        资源与资源之间的关系
        控件与资源之间的关系

    其又是使用了什么样的设计模式与数据结构。

缩写


    SWE : Silverlight for windows embedded

源代码

我已经在”基于Silverlight 的文件浏览器“的随笔当中,上传了一个同样的版本。

原文地址:https://www.cnblogs.com/pengxinglove/p/1846324.html