Practice First

实践第一

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

一个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的时候,将ViewModelUrl属性与该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>

 

 

posted on 2010-10-07 10:23  caoshenghe  阅读(584)  评论(0编辑  收藏  举报