gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 12:44:03 25 4
gpt4 key购买 nike

这很简单”!

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

下载安装

我已经安装了 WPF ToolkitSilverlight Toolkit来自 Codeplex。

我也去挖了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

所以我添加了它们

找到缺失的引用文献后,我尝试添加它们。这实际上似乎解决了 splinter 的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 开始.我弄清楚了 Silverlight 程序集的所有 WPF 等效项是什么,并且我实际上让我的项目编译和运行。然后我看到了结果......

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

标题有点正确(除了缺少排序箭头),但其余部分看起来像是某种涉及棕褐色砖的可怕事故。

这是 Silverlight Toolkit webpage 上的示例.

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

所以,我什至没有靠近。

我做了什么

请允许我解释一下我做了什么来解决这个烂摊子。

DataGridFrozenGrid

首先,我必须抢 DataGridFrozenGrid来自 this Silverlight Toolkit source code page因为 WPF 从未听说过这样的类。

BureauBlue

然后我粘贴了来自 the source code for BureauBlue 的关键部分(再次警告:此宝贝加载缓慢)。

关键部分,我的意思是:
  • 文件开头的所有刷资源加
  • Style对于这些控件中的每一个:
  • 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">

    更改这些名称似乎是一个非常糟糕的主意——并且可能是我所有问题的原因——但我不知道还能做些什么来编译这个东西。

    我必须做的另一个改变是:一些 SolidColorBrushLinearGradientBrush开始使用的元素 x:Name而不是 x:Key .我把它们都改成了 x:Key .也许这也是一个坏主意,但同样,编译器造就了我。

    这对你有帮助吗?

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

    最佳答案

    我基本上得出的结论是,我试图将一个方钉装入一个圆孔中(尽管声称这很“容易”)。银光DataGrid与 WPF 工具包差别太大 DataGrid .所以,目前,我只是试图将默认数据网格的样式设置为看起来像 BureauBlue。这是一项非常艰苦的工作,远非完美,但与移植风格相比,这是一个明确的改进。

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

    关于wpf - 如何将主题从 Silverlight 移植到 WPF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1611135/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com