【问题标题】:Can you use jQuery in WPF Applications?你可以在 WPF 应用程序中使用 jQuery 吗?
【发布时间】:2014-02-24 06:36:31
【问题描述】:

过去几个月我一直在创建一个 WPF 应用程序,我想在我的应用程序中添加一点动画。之前有人告诉我 jQuery 是一个很好的用于动画的 Javascript 库。

问题是在环顾四周后,互联网上没有多少东西可以让我知道这是否可能。

我对 jQuery 很陌生,所以我不会知道太多。如果 jQuery 在 WPF 中是不可能的,那是什么?

【问题讨论】:

    标签: c# jquery .net wpf


    【解决方案1】:

    所以从技术上讲,您可以在 WPF 中使用 jQuery。只是不是以你可能喜欢的方式。 使用web browser control,您可以从本地或远程源加载 html、css 和 javascript。

    请注意*我没有从头开始制作这个示例。来自this site

    在 xaml 中添加控件

    <WebBrowser x:Name="wbMain" Margin="30"></WebBrowser>

    在代码中

    wbMain.Navigate(new Uri("c:/MyFileThatUsesJqueryAndHasJqueryAsARef.htm"));

    此外,两者之间的通信也是可能的,但确实需要一些工作。 您必须创建一个具有完全信任安全性的 com 可见类

    
    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
    [ComVisible(true)]
    public class ObjectForScriptingHelper
    {
        Mainwindow mExternalWPF;
        public ObjectForScriptingHelper(Window1w)
        {
            this.mExternalWPF = w;
        }
        public void InvokeMeFromJavascript(string jsscript)
        {
            this.mExternalWPF.tbMessageFromBrowser.Text = string.Format("Message :{0}", jsscript);
        }
    
    }

    这样你就可以在你的类中创建一个实例并通过像

    这样的 javascript 访问它
    <input type="text" id="txtMessage" />
    <input type="button" value="InvokeMe" onclick="javascript:window.external.InvokeMeFromJavascript(document.getElementById('txtMessage').value);" />

    请查看这篇文章,了解更多您可以做的事情。

    注意事项

    • 这很可能不是开发新桌面应用程序的最佳方式。如果只是出于熟悉而使用现有工具的问题,那么我会考虑其他方法,例如学习 WPF 或寻找诸如 this questionone of these 之类的方法

    如果事实上您打算将 html 和 javascript 编码的现有代码库与离线应用程序一起使用,您可以利用这种方法通过各种方式回收您现有的代码库,看看这个或方法或其中之一提到的其他方法,例如使用WPF animations

    【讨论】:

    • 感谢您对我的问题的详细回答和解决方案。我仍然不知道天气 jQuery 或 Animation 在 XAML 中会更好。
    • 根据我的经验,我会说使用 xaml 和表达式混合(现在应该有免费版本)。我msdn.microsoft.com/en-us/library/cc296376(v=expression.40).aspx
    • 另一条路线很可能会充满痛苦
    • 示例代码有一堆语法错误,不清楚意图是什么。例如:public ObjectForScriptingHelper(Window1w)
    • 我没有看到“一堆语法错误”。如果您看到特定的内容,请随时指出或编辑它(如果您有代表)。我确实看到了一个用于关闭 WebBrowser 标记的转义标记,并且我修复了它。如果您不喜欢该类名,请随意在 cmets 中添加一个更好的名称,我很乐意更改它。就意图而言...... OP想知道是否有办法让javascript和wpf进行通信,这是实现这一目标的一种方式。请详细说明您的评论,并在否决之前给我一些背景信息。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 2018-11-02
    相关资源
    最近更新 更多