我正在MVVM模式中编写一个小的HTML编辑器。当我想写入我的html文件时,我将WPF WebBrowser控件加载到View中的Label中。之后我在这个webBrowser控件中打开一个IHTMLDocument2并设置了designMode。 现在,当我在WebBrowserIHTMLDocument2中写入内容时,我可以在应用程序中看到它。但我在PC上的固定HTMLFile没有改变。 如果更改了属性“_webBrowser.Document”,我想将_webBrowser.Document的内容写入我的电脑上的html文件中。 有人可以帮助我吗,我做错了什么?
XML文件
<Label Grid.Row="1" Background="LightGray" Content="{Binding Label_Content}"> </Label>
</Grid>
MainViewModel 1
public object Label_Content
{
get { return this.label.Content; }
set
{
this.label.Content = value;
this.RaisePropertyChanged("WebBrowser");
}
}
public object WebBrowser
{
get { return this._webBrowser.Document; }
set
{ }
}
MainViewModel 2
private void NewFile()
{
File_Manager file_mng = new File_Manager(comments, _webBrowser, doc, doc3);
_webBrowser = file_mng.NewFile();
doc = _webBrowser.Document as IHTMLDocument2;
this.label.Content = _webBrowser;
this.RaisePropertyChanged("Label_Content");
}
File_Manager
public WebBrowser NewFile()
{
string text = "<!DOCTYPE html><html><body oncontextmenu=\"return false;\"></body></html>";
comments.Append("<!DOCTYPE html>\r\n");
path = Model.Ordnername;
File.WriteAllText(path+"/index.html", text);
this._webBrowser = new WebBrowser();
if (_webBrowser != null)
_webBrowser.Navigate("file:///"+ path + "/index.html");
this.RaisePropertyChanged("Label_Content");
doc = _webBrowser.Document as IHTMLDocument2;
doc.designMode = "On";
return _webBrowser;
}
ViewModelBase
public abstract class ViewModelBase: INotifyPropertyChanged
{
#region NotifyPropertyChanged Methods
public void RaisePropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
} 我认为问题是我只是在WebBrowserControl内部更改文档,而不是将此内容写入我的文件中。但是我怎么能这样做呢?
如果有人可以帮助我会很好!