gpt4 book ai didi

wpf - 为 Silverlight 3.0 应用程序创建 WPF 前端

转载 作者:行者123 更新时间:2023-12-04 20:59:32 26 4
gpt4 key购买 nike

我正在考虑为 Silverlight 应用程序创建 WPF 前端。由于 Silverlight 通常具有较小的功能子集,这应该是可能的,但我不确定解决该问题的最佳方法。从一开始,让我说我目前正在浏览器外运行该应用程序,但它缺少我想添加的捕获系统范围按键等功能,以及一些 W7 集成。

我以前在 Silverlight 和 WPF 之间共享源代码,方法是为每个创建一个项目,然后使用“添加为链接”在两者之间链接源文件。这一次,我可能会使用 .NET RIA 服务在平台之间共享源代码和业务逻辑。

我看到的问题是在项目之间共享 Xaml。除了命名空间,它几乎与复制和粘贴兼容,但这不是共享资源的好方法。有没有人想出一个在 Silverlight 和 WPF 之间共享 Xaml 的好方法?

我想到的最后一个选项是让 WPF 应用程序使用浏览器控件来承载 Silverlight 应用程序。然后我可以围绕它添加 Windows 特定功能。对我来说,从开发和测试的角度来看,这似乎是最干净的方式。大家怎么看?

最佳答案

这里有一个你可以使用的技巧。

  1. 确保您的 Silverlight View 和 View 模型在它们自己的程序集中是独立的,您的 WPF 应用程序可以轻松引用这些程序集。
  2. 添加对包含 WPF 应用程序中的 View 和 View 模型的 Silverlight 类库的引用。
  3. 将 UserControl 的内容“CustomerView”移动到名为“customerViewTemplate”的资源字典中的 DataTemplate

  4. 在 Silverlight 和 WPF 中的根 UI 元素 XAML 文件中执行此操作:

<ContentControl ContentTemplate="{Staticresource customerViewTemplate}" />

  1. 在 Silverlight 应用程序的 App.xaml 中,确保将以下资源字典引用添加到合并的字典中。

<ResourceDictionary Source="MyApp.Views;component/CustomerViewResources.xaml" />

  1. 在 WPF 应用程序的 App.xaml 中,确保将以下资源字典引用添加到合并的字典中。

<ResourceDictionary Source="pack://application:,,,/MyApp.Views;component/CustomerViewResources.xaml" />

抱歉编号问题,看起来 Stack Overflow 的有序列表机制有点不对劲。

之所以可行,是因为您不能直接从 WPF 中的 XAML 引用 Silverlight UserControl。它会给你以下错误:

'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.

如果您尝试使用 C# 将 UserControl 强制放到 WPF 网格上,您将收到以下 3 个错误:

The best overloaded method match for 'System.Windows.Controls.UIElementCollection.Add(System.Windows.UIElement)' has some invalid arguments.

The type 'System.Windows.Controls.UserControl' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e'

cannot convert from 'ToWpfTest.Views.TestView' to 'System.Windows.UIElement'

我认为这是因为 WPF 中的 System.Windows.UIElement 与 Silverlight 中的 System.Windows.UIElement 不同。

关于wpf - 为 Silverlight 3.0 应用程序创建 WPF 前端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/863650/

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