none
为什么Silverlight总告诉我找不到皮肤文件? RRS feed

  • 问题

  • 我的项目里面,想让sl能有换肤功能,导入了Microsoft.Windows.Controls.Theming.dll,然后把皮肤文件放在sl项目的themes下。。。在下拉菜单改变选项的时候,进行换肤。。。。但是程序总在ImplicitStyleManager.SetResourceDictionaryUri(control, uri);这行提示我Resource not found皮肤文件。。。。我确定路径没错。。。

    看了一下下载的例子,例子的.xap文件里,可以看到themes文件夹和皮肤文件。。。但是自己项目里面.xap文件里面没有,删了xap文件重新生成也没有。。。是不是因为这个原因才不能换肤。。。要怎么解决呢??

    麻烦知道的人帮我一下,谢谢~~
    2009年6月20日 18:07

答案

  • 不用Clearn所有控件,清除所有控件再生成就不叫换皮肤了:)

                Uri uri = new Uri("ExpressionLight.xml", UriKind.Relative);
                ImplicitStyleManager.SetResourceDictionaryUri(LayoutRoot, uri);
                ImplicitStyleManager.SetApplyMode(LayoutRoot, ImplicitStylesApplyMode.Auto);            
                ImplicitStyleManager.Apply(LayoutRoot);
    把你的根Panel设置模板,他内部的东东会自动更换,这样就可以了
    2009年6月22日 0:50
    版主

全部回复

  • 你的模板文件的位置没有关系,模板文件的属性记得选

    Build Action : Content

    下面的都不变就能读取到了
    2009年6月21日 0:01
    版主
  • 谢谢你。。找到模板文件了。。。。



    不过很郁闷的是。。我的界面生成用的反射,并且有这样的判断:如果有这个界面就激活包含这个界面的tab,没有就生成一个tab。。。。我看了换肤功能的例子。。换肤是要清掉所有的控件,重新生成,生成的时候应用模板文件。。。我的项目里面用了皮肤功能,,,,整个界面的逻辑就乱套了。。。


    我想问下。。全部控件的换肤功能是不是只能清掉所有的控件,再重新生成?
    2009年6月21日 16:34
  • 不用Clearn所有控件,清除所有控件再生成就不叫换皮肤了:)

                Uri uri = new Uri("ExpressionLight.xml", UriKind.Relative);
                ImplicitStyleManager.SetResourceDictionaryUri(LayoutRoot, uri);
                ImplicitStyleManager.SetApplyMode(LayoutRoot, ImplicitStylesApplyMode.Auto);            
                ImplicitStyleManager.Apply(LayoutRoot);
    把你的根Panel设置模板,他内部的东东会自动更换,这样就可以了
    2009年6月22日 0:50
    版主