一个WPF小项目总结
这个小项目实际上是一个CHM文件的 浏览器,不过添加了一些附加功能,例如能记住,上一次用户浏览过的内容,能在Windows启动的时候自动启动,切换到的相应的主题等。
基本上左边显示文档的结构数,右边现实选中树结点对应的内容,有个CheckBox让用户选择是否在Windows启动的时候启动。
1.采用Model-View-ViewModel模式
参考文章 http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx
http://msdn.microsoft.com/en-us/magazine/dd419663.aspx
2.由于WPF的浏 览器控件,不是很好用(老是会有个提示安全问题),所以使用Winform的浏览器控件。
参考文章 http://nayyeri.net/host-windows-forms-controls-in-wpf
3.由于Winform浏览器控件不能直接和Url作数据绑定,所以使用DependencyProperty的回调
就是在View上定义注册一个DependencyProperty,并有相应的回调
public static readonly DependencyProperty DefaultUrlProperty = DependencyProperty.Register("DefaultUrl", typeof(string), typeof(CHMView), new FrameworkPropertyMetadata ( new PropertyChangedCallback(OnDefaulUrlChanged)));
public string DefaultUrl { get { return (string)GetValue(DefaultUrlProperty); } set { SetValue(DefaultUrlProperty, value); } }
|
在Template你的ViewModel的时候,将ViewModel的Url属性与该Dependency属性绑定就可以
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:vm="clr-namespace:XXXXXX">
<DataTemplate DataType="{x:Type vm:CHMViewModel}"> <vm:CHMView DefaultUrl="{Binding DefaultUrl}"/> </DataTemplate> </ResourceDictionary>
|