问题:在WebBrowser(或类似控件)中显示一个网站,原始站点具有一个登录页面,该页面会引导您进入语句选择页面,一旦选择了商店并选择了“提交”日期,就会打开另一个页面,其中显示发票表。表格的HTML的ID为“声明”。
我的最终目标是获取表并解析数据行。
我尝试在View中添加WebBrowser控件,将源设置为站点。此方法有效,我能够登录,选择位置并查看对帐单页面。但是,我找不到将WebBrowser控件中的HTML绑定到ViewModel中的变量的方法。
<Border BorderBrush="Black" BorderThickness="1" Grid.Column="1" Grid.Row="2">
<WebBrowser Source="www.google.com" />
</Border>
如果我以后希望通过一个放置框更改此“源”,则该源也无法绑定。
下一个想法是在ViewModel中创建一个WebBrowser对象,将网站分配给WebBrowser的源,并将View中的WebBrowser绑定到ViewModel中的WebBrowser。
ViewModel的WebBrowser(第二次尝试)我出于安全性原因更改了网站:
<Border BorderBrush="Black" BorderThickness="1" Grid.Column="1" Grid.Row="2">
<WebBrowser DataContext="{Binding StatementSite}"/>
</Border>
ViewModel代码:
private WebBrowser _statementSite = new WebBrowser();
public WebBrowser StatementSite
{
get { return _statementSite; }
set {
_statementSite = value;
NotifyOfPropertyChange(() => StatementSite);
}
}
public void StartProgressCommand()
{
StatementSite.Source = new Uri("https://www.google.com/");
NotifyOfPropertyChange(() => StatementSite);
}
当我以这种方式运行程序时,它会编译并没有错误地开始,但是视图中没有可见的站点,只有黑色控件。下面的原始方法显示了完美的网站,但我找不到将HTML绑定到ViewModel中的属性的方法。
<Border BorderBrush="Black" BorderThickness="1" Grid.Column="1" Grid.Row="2">
<WebBrowser Source="http:\\www.google.com"/>
</Border>
WebBrowser控件甚至是实现此目的的好方法吗?以及如何将HTML绑定到ViewModel或在ViewModel中构建WebBrowser控件并将其显示在视图中?