【问题标题】:Silverlight custom controlsSilverlight 自定义控件
【发布时间】:2011-05-02 11:41:39
【问题描述】:

有没有关于为 silverlight 开发自定义控件的好书?

我想要的是创建一个网格控件,它也可以充当 TreeList 控件。你能告诉我这种控件的好的基类是什么吗?

还有一个问题:如果我在 Silverlight 中开发一个控件,如何将我的代码重用于与 WPF 相同的控件?

是否必须复制代码?希望不会……

再见 马蒂亚斯

【问题讨论】:

  • DataGrid 和 TreeView 的混合是有关 WPF 控件的最常见问题之一:stackoverflow.com/questions/4293739/…。但是我还没有看到一个好的答案,而且使用 Silverlight 会更加困难。

标签: wpf silverlight wpf-controls


【解决方案1】:

我想要的是创建一个网格控件,它也可以充当 TreeList 控件。你能告诉我这种控件的好的基类是什么吗?

基本上,这取决于几个因素,您有更多选择。在我看来,我会选择Panel,以防在布局和排列过程中需要更多控制。

或者,您可以简单地从 ItemsControl 扩展并编写您自己的控件。但是,如果您计划进行更大的实施,那么我强烈建议您阅读 WPF Toolkit 中提供的 GridControl 实施。

Tree List Control On Code Project

还有一个问题:如果我在 Silverlight 中开发一个控件,如何将我的代码重用于与 WPF 相同的控件?

Sharing Code Between WPF and Silverlight From MSDN

【讨论】:

  • 我觉得codeproject中控件的实现不够灵活。我想我必须从面板派生,因为我需要完全控制。而如果我从 Panel 派生,是否必须自己渲染控件?
  • @codegod,是的。基本上,面板不如何布局或渲染它的孩子。因此,您必须同时覆盖 ArrangeOverride() 和 MeasureOverride() 才能呈现您的自定义控件。 IMO,我会尝试通过修改任何现有 WPF ItemsControl 的控件模板来实现此 TreeList 控件。但是,如果您选择使用 Panel 方法,则通常需要 1 个月才能实施控制。有很多东西,您需要注意例如:虚拟化。顺便说一句,代码项目控制缺少什么或您正在寻找什么样的灵活性?
  • 好吧,codeproject-control 是从 ListView 派生的,我对这种方法有两个问题:我不知道 ListView 的速度有多快,尤其是对于大量数据。 ListView 是否仅呈现当前可见的项目?下一个问题是我希望能够显示分组的数据(如在 Outlook 中)或卡片视图。这意味着我需要完全灵活的布局。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-15
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-24
相关资源
最近更新 更多