【问题标题】:Use WPF Controls in Web project在 Web 项目中使用 WPF 控件
【发布时间】:2013-05-02 16:47:03
【问题描述】:

我在我的 asp.net 项目解决方案中创建了另一个 WPF 项目,现在想在我的 Web 应用程序中使用我的 WPF 控件。是否可以在我的 Web 项目中使用 wpf 控件?我在互联网上发现有人说您必须将 Silverlight 用于网络应用程序。据我所知,silverlight 是 WPF 的子部分,那么为什么我不能使用 WPF 呢??我必须使用 WPF 控件,因为已经做了足够的努力来构建 wpf 控件,现在想在 Web 应用程序中使用。

【问题讨论】:

  • WPF 是一个框架。 Silverlight 是一个插件。两者都非常不同。由于 XAML,您可能会发现它们相似,但它们受非常不同的原则管理。
  • @StaWho silverlight 不是插件,silverlight 使用插件作为 .net 运行时的代理。
  • @Marco 说我傻,但是 Silverlight 在 MAC 上使用 .NET Runtime 上的哪个版本,或者 Moonlight 在 Linux 上使用哪个版本?
  • @StaWho,我没有说 .NET Framework,我说的是 .NET 运行时。对于 linux,你有单声道,对于 Mac,你有别的东西。

标签: c# asp.net wpf


【解决方案1】:

是的,您可以在网页中嵌入 WPF 控件,但您需要启用相关插件(很像 Silverlight)。

例如,Xceed Datagrid for WPF 可以在 Internet Explorer 中查看。

虽然 XAML 应用程序默认处于禁用状态,但您需要在 Internet Explorer 安全设置中启用它们。

对于 Firefox,您将需要 .Net Framework Assistant 和 MSDN 建议的 WPF 插件。

WPF 是一个非常棒的框架,启用基于 WPF/XAML 的应用程序以供 Intranet 使用会很好(您可以通过组策略继承安全权限),或者对于不介意额外配置的一组受众。

【讨论】:

    【解决方案2】:

    实现这一目标的唯一方法是使用 Silverlight 组件而不是 WPF。正如您所说,silverlight 是 WFP 的子集,因此并非支持所有 WPF 功能,但支持 silverlight runner。在大多数情况下,视觉效果是完全兼容的,即用户控件,所以如果你没有使用任何特定于 WPF 的东西,那么你应该是伟大的。

    也许在这里检查:

    WPF vs Silverlight

    顺便说一句,您可以发布您的 xaml,以便我们了解一下吗?

    马可

    【讨论】:

      【解决方案3】:

      我相信您可以使用 XML WPF 浏览器应用程序来执行此操作,但我可能不推荐它,因为我认为您的用户必须下载客户端组件才能运行它。以下链接提供了更多信息。

      http://msdn.microsoft.com/en-us/library/aa970060.aspx

      【讨论】:

        【解决方案4】:

        不,您不能在网页中使用 WPF。 WPF 适用于 Windows 应用程序,只能在 Windows 机器上运行。互联网与设备无关,可以在 Windows、Linux、Android、iOS 等平台上运行。因此,您需要将 ASP .NET(或类似的)用于 Web 应用程序,而将 WPF 用于 Windows。

        Silverlight 是 WPF 的子集,可以在网页上运行...并非所有设备都支持它(即 iOS)。因此,如果您真的想成为系统不可知论者并忠于网络精神,请使用 HTML/CSS 和 JavaScript。

        【讨论】:

        • 他不能在网页中使用 WPF,但他肯定可以在网页中托管 silverlight 应用程序。
        • @Marco - 是的,我已经澄清他可以使用 Silverlight,但它不适用于所有设备。他没有确切说明它将在哪里使用,所以我强调 Silverlight 可以工作,但要记住它不会在任何地方工作,HTML 等会。 Silverlight 作为 LOB 非常棒,但对于大多数应用程序恕我直言。
        • 他一开始就在考虑使用wpf,所以我认为他并不担心,但也许他也不知道。
        【解决方案5】:

        不管有没有可能,使用嵌入在 html 页面中的 WPF 控件实在是太可怕了。

        经典的 WPF 控件可能正在运行(更改浏览器设置后),但存在许多安全问题。此外,您必须在任何人看到真实页面之前向您的用户展示一个待办事项列表。

        Silverlight 作为 WPF 的子集,但它也是一个插件,并非适用于所有平台,例如 iOS。

        我建议使用 HTML 5,它本身就是一个标准,并且可以在所有其他平台上查看。它会引起更多的努力,但绝对值得。

        【讨论】:

          【解决方案6】:

          虽然有一些方法可以做到这一点(本页面上的其他用户已经提到过),但依靠您的访问者在他们的浏览器中配置或安装插件意味着实现这一点非常危险(假设您的目标是 WWW 和不仅仅是本地用户)。

          我会考虑构建一个 Web 应用程序 UI,然后通过类库引用所有内容(如果使用 N 层设计)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多