UcGplotShow.xaml.cs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. using System.Windows;
  2. using System.Windows.Controls;
  3. using System.Windows.Data;
  4. using System.Windows.Documents;
  5. using System.Windows.Input;
  6. using System.Windows.Media;
  7. using System.Windows.Media.Imaging;
  8. using System.Windows.Navigation;
  9. using System.Windows.Shapes;
  10. using CefSharp;
  11. using CefSharp.Wpf;
  12. using CEFSharpWpf;
  13. namespace CEFSharpWPF
  14. {
  15. /// <summary>
  16. /// UcGplotShow.xaml 的交互逻辑
  17. /// </summary>
  18. public partial class UcGplotShow : UserControl
  19. {
  20. public string URL { get; set; } = "http://172.16.0.181:8888/#/demo";
  21. public UcGplotShow()
  22. {
  23. OneTimeLoad.Init();
  24. InitializeComponent();
  25. this.CommandBindings.Add(new CommandBinding(ApplicationCommands.Copy,
  26. (s, e) => { Clipboard.SetDataObject(URL ?? string.Empty, false); }));
  27. this.Loaded += UcGplotShow_Loaded;
  28. }
  29. private void UcGplotShow_Loaded(object sender, RoutedEventArgs e)
  30. {
  31. var re = new SgRequestHandle();
  32. webBrowser.RequestHandler = re;
  33. //webBrowser.Address = URL;
  34. }
  35. /// <summary>
  36. /// 重新加载页面
  37. /// </summary>
  38. /// <param name="url"></param>
  39. private void ReloadUrl(string url)
  40. {
  41. if (webBrowser.IsBrowserInitialized)
  42. {
  43. webBrowser.Address = URL;
  44. webBrowser.Load(url);
  45. }
  46. }
  47. /// <summary>
  48. /// 强制刷新
  49. /// </summary>
  50. public void Refresh()
  51. {
  52. if (webBrowser.IsBrowserInitialized)
  53. {
  54. webBrowser.Address = URL;
  55. webBrowser.Load(URL);
  56. }
  57. }
  58. public void Show(string url, string title = "")
  59. {
  60. URL = url;
  61. ReloadUrl(url);
  62. }
  63. #region 封装交互
  64. /*
  65. * 不想直接饮用程序集,将公开方法封装一遍
  66. */
  67. /// <summary>
  68. /// 获取浏览器选项
  69. /// </summary>
  70. public ChromiumWebBrowser Browser
  71. {
  72. get { return webBrowser; }
  73. }
  74. /// <summary>
  75. /// 注册绑定对象
  76. /// </summary>
  77. /// <param name="objName"></param>
  78. /// <param name="obj"></param>
  79. public void RegisterJsObject(string objName, object obj)
  80. {
  81. Browser.RegisterJsObject(objName, obj, new BindingOptions() {CamelCaseJavascriptNames = false});
  82. }
  83. /// <summary>
  84. /// 执行js函数
  85. /// </summary>
  86. /// <param name="fun"></param>
  87. public void ExecuteJsFun(string fun)
  88. {
  89. Browser.ExecuteScriptAsync(fun);
  90. }
  91. #endregion
  92. }
  93. }