如何将主题从Silverlight移植到WPF?

如何将主题从Silverlight移植到WPF?,第1张

概述这很简单”! 我刚刚遇到this blog post by Rudi Grobler,它表示将主题从Silverlight移植到WPF很“容易”.不幸的是,他没有说怎么做. 下载并安装 我已从Codeplex安装了WPF Toolkit和Silverlight Toolkit. 我也去了the source code for the theme I’m interested in (BureauB 这很简单”!

我刚刚遇到this blog post by Rudi Grobler,它表示将主题从Silverlight移植到WPF很“容易”.不幸的是,他没有说怎么做.

下载并安装

我已从Codeplex安装了WPF Toolkit和Silverlight Toolkit.

我也去了the source code for the theme I’m interested in (BureauBlue)(警告,这需要一点时间来加载),并将其粘贴到我的测试项目中的新资源字典文件中.

哦,破坏参考

很多蓝色波浪线.

alt text http://img32.imageshack.us/img32/6032/brokenreferences.jpg

这里没有参考

所以,我去添加引用并发现……它们没有列出.

alt text http://img35.imageshack.us/img35/7466/addreferencedialog.jpg

啊,他们在那里

幸运的是,我经过一番广泛的浏览后才能找到它们.

alt text http://img269.imageshack.us/img269/3830/addreferencedialogbrows.jpg

所以我添加了它们

找到缺少的引用后,我试图添加它们.这实际上似乎解决了破碎的xmlns链接(至少蓝色波浪线消失了),但是当我构建我的项目时出现错误:

Error 1 UnkNown build error,‘Cannot resolve dependency to assembly ‘System.windows,Version=2.0.5.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e’ because it has not been preloaded. When using the ReflectionOnly APIs,dependent assemblIEs must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.’ NmtConcept

所以我问……

如何在WPF中使Silverlight主题工作?

更新!

好吧,我以为我搞清楚了.我决定从DataGrID开始.我弄清楚所有WPF等价物对于Silverlight程序集是什么,我实际上得到了我的项目来编译和运行.然后我看到了结果……

alt text http://img44.imageshack.us/img44/2418/porteddatagrid.jpg

标题有点正确(除了丢失的排序箭头),但其余部分看起来有一种涉及棕褐色砖的可怕事故.

这是Silverlight Toolkit webpage的例子.

alt text http://img196.imageshack.us/img196/997/silverlightdatagrid.jpg

所以,我甚至没有接近.

我做了什么

请允许我解释一下我为达到这个烂摊子所做的工作.

DataGrIDFroZenGrID

首先,我必须从this Silverlight Toolkit source code page获取DataGrIDFroZenGrID,因为WPF从未听说过这样的类.

BureauBlue

然后我粘贴了the source code for BureauBlue的关键部分(再次警告:这个宝宝加载缓慢).

关键部分,我的意思是:

>文件开头的所有画笔资源加
>每个控件的样式:

> DataGrIDColumnheader
> DataGrIDCell
> DataGrIDRowheader
> DataGrIDRow

奇怪的是,原始文件不包含DataGrID本身的样式(如果我错了,请纠正我,但我使用了Find和所有内容).

Silverlight – > WPF

接下来,我将xmlns引用转换为WPF等效项.这是我的ResourceDictionary元素的结果:

<ResourceDictionary    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    xmlns:mwc="clr-namespace:Microsoft.windows.Controls;assembly=WPFToolkit"    xmlns:mwcp="clr-namespace:Microsoft.windows.Controls.Primitives;assembly=WPFToolkit"    xmlns:swcp="clr-namespace:System.windows.Controls.Primitives;assembly=CommonlibraryWpf"    xmlns:sw="clr-namespace:System.windows;assembly=WPFToolkit">

我当然编辑了命名空间标签以匹配.

编辑直到它工作

一旦我完成了所有这些工作,我仍然有一些小问题.一些x:name元素中包含空格.编译器不允许这样做,所以我不得不用下划线替换空格.

以下是相关摘要:

<!-- important: all underscores used to be spaces --><sw:VisualState    x:name="MouSEOver_CurrentRow_Selected"><sw:VisualState    x:name="normal_CurrentRow"><sw:VisualState    x:name="normal_Selected"><sw:VisualState    x:name="normal_EditingRow"><sw:VisualState    x:name="normal_AlternatingRow" /><sw:VisualState    x:name="normal_Selected"><sw:VisualState    x:name="MouSEOver_Selected"><sw:VisualState    x:name="Unfocused_Selected">

更改这些名称似乎是一个非常糟糕的想法 – 可能是我所有问题的原因 – 但我不知道还有什么可以做的事情来编译.

我必须做的另一个改变是:开头的一些SolIDcolorBrush和linearGradIEntBrush项目使用x:name而不是x:Key.我将所有这些都改为x:Key.也许这也是一个坏主意,但再次,编译器让我.

这有助于你帮助我吗?

如果你仍然和我在一起,有什么建议吗?

解决方法 我基本上得出的结论是,我试图将一个方形钉固定在一个圆孔中(尽管声称它“很容易”). Silverlight DataGrID与WPF Toolkit DataGrID有很大不同.所以,目前,我一直试图将默认数据网格设置为看起来像BureauBlue.这是非常艰苦的工作,远非完美,但它比移植风格有了明显的改进.

alt text http://img26.imageshack.us/img26/7163/styleddatagrid.jpg

总结

以上是内存溢出为你收集整理的如何将主题从Silverlight移植到WPF?全部内容,希望文章能够帮你解决如何将主题从Silverlight移植到WPF?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1002746.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存