zoukankan      html  css  js  c++  java
  • 一个WPF小项目总结

    一个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>

     

  • 相关阅读:
    内置函数
    win10 下安装meteror
    每日十问(3)
    白话带你理解什么是编程
    什么是对象的方法
    Python之列表推导式
    英语对学习软件开发重要吗?
    python3中的range函数返回的是列表吗?
    文件读写
    神奇的字符编码
  • 原文地址:https://www.cnblogs.com/caoshenghe/p/1844972.html
Copyright © 2011-2022 走看看