• 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 的文件浏览器“的随笔当中,上传了一个同样的版本。

  • 相关阅读:
    GPU 加速NLP任务(Theano+CUDA)
    SOJ 1717 Computer (单机任务调度)
    CNN for NLP (CS224D)
    数据分析:中国高校更名历史 Python
    TextRank 自动文摘
    深度学习笔记(十一)网络 Inception, Xception, MobileNet, ShuffeNet, ResNeXt, SqueezeNet, EfficientNet, MixConv
    深度学习笔记(七)SSD 论文阅读笔记简化
    在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib 及一些问题
    win10 + gtx1060 + cuda8.0 + caffe + vs2013 + Tensorflow + PyTorch
    深度学习笔记(二十五)DenseBox & FCOS & PolarMask
  • 原文地址:https://www.cnblogs.com/pengxinglove/p/1846324.html
Copyright © 2020-2023  润新知