您的位置:首页 > 其它

一个WPF小项目总结

2010-10-07 10:23 288 查看
一个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>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐