none
求combox的实现原理 RRS feed

  • 问题

  • 我想参照combox实现一个类似控件,现在combox下拉是一个相似于listbox的控件,而我想下拉一个datagrid.谢谢。
    2011年11月3日 3:07

答案

  • 你就吹吧,在模版中替换一个地方就可以了。
    2011年11月4日 2:40
  • 估计你是一个喜欢钻研的年轻人。

    等你真正定制控件的时候,你会发现那不是吹,是因为你从来不开发TemplateControl,你不是定制一个控件,而是修改一个控件。我指的是自己定制一个支持输入和支持选择的ComboBox。如果你只是下拉一个DataGrid,这样的问题,也许不会再这里提问。

    你修改母板无法改变原有ComboBox的逻辑。


    2011年11月4日 12:59

全部回复

  • 建议你用TextBox+Popup重新定制一个可以输入,也可下拉的ComboBox。

    不过不知道你基础如何,定制控件(不是UserControl,而是TemplateControl)是比较复杂的,牵扯的基础比较多。你必须熟悉DependencyProperty,Style,ContentTemplate,StoryBoars,VisualState等很多基础概念。

     



    • 已编辑 TFSoft 2011年11月3日 14:40
    2011年11月3日 14:40
  • 你就吹吧,在模版中替换一个地方就可以了。
    2011年11月4日 2:40
  • 估计你是一个喜欢钻研的年轻人。

    等你真正定制控件的时候,你会发现那不是吹,是因为你从来不开发TemplateControl,你不是定制一个控件,而是修改一个控件。我指的是自己定制一个支持输入和支持选择的ComboBox。如果你只是下拉一个DataGrid,这样的问题,也许不会再这里提问。

    你修改母板无法改变原有ComboBox的逻辑。


    2011年11月4日 12:59
  • 你发现可以用模板来解决,这样很好。
    最简单的实现方式就是用模板。
    TSoft的意思可能以为你是想自己完整做一个Combox出来。^_^

    TSoft也是很热心的哦 。
    努力!完成了js解析器,还差一个svg插件,一个绘图程序,做好自己,呵呵~!
    2011年11月7日 3:08
    版主
  • 我想参照combox实现一个类似控件,现在combox下拉是一个相似于listbox的控件,而我想下拉一个datagrid.谢谢。


    你好,

    一种简单的做法是复制一份ComboBox的模板到一个UserControl,然后用DataGrid替换一下模板里面的ItemsPresenter控件并处理一些逻辑,如下拉框弹出,暴露一个ItemsSource属性(用于DataGrid的ItemsSource联系起来)。

    若你想要定制自己的模板控件,请参考以下文档:

    http://msdn.microsoft.com/zh-cn/library/cc278064(v=VS.95).aspx


    Daoping Liu - MSFT
    2011年11月7日 3:10
    版主