javascript 的 WPF Webbrowser 使用 c# 中定义的变量?
WPF Webbrowser with javascript use variable defined in c#?
我试图在 Webbrowser 控件中加载的 html 页面内的 javascript 函数中传递在我的 wpf 项目中定义的数组,但我找不到任何方法可以做到这一点。
我想做的例子:
Xaml:
<WebBrowser x:Name="WBTimeGraph" />
c#:
namespace GraphNameSpace
{
public partial class TimeGraph : Window
{
// MEMBERS
public []int MyArrayOfData = new int[50];
// METHODS
public TimeGraph ()
{
InitializeComponent();
string Dir = Environment.CurrentDirectory;
Uri tNav = new Uri(Dir + string.Format("/TimeGraph.html"));
WBTimeGraph.Navigate(tNav);
}
}
}
HTML :
<script>
$(function () {
// Do a Graph with MyArrayOfData
});
</script>
我找到的最简单的解决方案是调用一个带有参数的 javascript 函数来更新我的图形,并将序列化数组作为参数传递
HTML :
<script type="text/javascript" src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>
<script type="text/javascript">
function UpdateGraph(json) {
var data = JSON.parse(json);
// Update My Graph with new data
// This allow me to use data like the serialised array - data[0] ...
}
</script>
C#:
在引用中添加了 System.Web.Extension 以进行脚本序列化
private void UpdateValueInJavascriptGraph()
{
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var json = serializer.Serialize(MyArrayOfData);
object result = this.WBTimeGraph.InvokeScript("UpdateGraph", new object[] { json });
}
我试图在 Webbrowser 控件中加载的 html 页面内的 javascript 函数中传递在我的 wpf 项目中定义的数组,但我找不到任何方法可以做到这一点。
我想做的例子:
Xaml:
<WebBrowser x:Name="WBTimeGraph" />
c#:
namespace GraphNameSpace
{
public partial class TimeGraph : Window
{
// MEMBERS
public []int MyArrayOfData = new int[50];
// METHODS
public TimeGraph ()
{
InitializeComponent();
string Dir = Environment.CurrentDirectory;
Uri tNav = new Uri(Dir + string.Format("/TimeGraph.html"));
WBTimeGraph.Navigate(tNav);
}
}
}
HTML :
<script>
$(function () {
// Do a Graph with MyArrayOfData
});
</script>
我找到的最简单的解决方案是调用一个带有参数的 javascript 函数来更新我的图形,并将序列化数组作为参数传递
HTML :
<script type="text/javascript" src="http://ajax.cdnjs.com/ajax/libs/json2/20110223/json2.js"></script>
<script type="text/javascript">
function UpdateGraph(json) {
var data = JSON.parse(json);
// Update My Graph with new data
// This allow me to use data like the serialised array - data[0] ...
}
</script>
C#:
在引用中添加了 System.Web.Extension 以进行脚本序列化
private void UpdateValueInJavascriptGraph()
{
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var json = serializer.Serialize(MyArrayOfData);
object result = this.WBTimeGraph.InvokeScript("UpdateGraph", new object[] { json });
}