在MVVM模式中使用WPF WebBrowser控件更改WebBrowser.document期间编写html文档?

时间:2015-05-12 11:32:31

标签: c# wpf mvvm

我正在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内部更改文档,而不是将此内容写入我的文件中。但是我怎么能这样做呢?

如果有人可以帮助我会很好!

0 个答案:

没有答案