Lou*_*uro 48 wpf user-controls custom-controls wpf-controls viewmodel
我一直在阅读有关用户和自定义控件之间差异的一些解释,例如:http: //www.wpftutorial.net/CustomVsUserControl.html
例如,我想创建一个带有2个组合框的数据网格的简单组合,这些组合框负责更改数据网格项目的值.我想为此创建一个特定的控件,因为我将使用它很多次.我想实现后面的逻辑然后在xaml调用中我只需要指定itemsSource.
对于此示例,我应该创建用户控件还是自定义控件?由于我将拥有属性和逻辑,我应该有一个用于此控件的viewmodel吗?
编辑:你知道一些文章在这两个选项之间有明确的概念分离吗?
Til*_*lak 82
选择不仅在用户控件和自定义控件之间,还包括用户控件,自定义控件,自定义控件模板,自定义数据模板,标题模板(基于集合的控件),附加属性.请参阅控制编写概述
我遵循以下顺序考虑
附加属性:如果可以实现功能,我使用附加属性.示例,数字文本框.
控制模板:当通过自定义控件模板来满足需求时,我使用它.例如,循环进度条.
自定义控件:如果控件模板无法执行,我使用自定义控件.如果我需要定制/扩展已存在的控件.示例提供排序,基于GridView中的标题行进行过滤(GridView存在于metro应用程序中,仅用于说明示例)
用户控制:最不受欢迎的一个.只有在需要合成时,我才能使用自定义控件.就像在你的例子中,2个Combobox和1个datagrid.用户控件不提供可通过自定义控件或控件模板使用的无缝无外观功能.
Ben*_*ale 40
您已经有一些很好的答案可以解释这些差异,但也了解自定义控件并UserControls
具有不同的用途:
一个UserControl
典型的encapusulates某种复合行为.例如,如果您的应用程序需要在许多地方编辑联系人详细信息,则可以创建一个自定义控件,其中包含使用具有相关代码的提交按钮布局的所有数据的标签和文本字段,并重用此控件整个申请过程中.
自定义控件是从其中一个WPF
控件类(EG 等)派生的控件Control
,ContentControl
必须在代码中创建.这些控制通常有一个凝聚力的目的(想TextBox
,ComboBox
,Label
),而不是作为一个整体共同行动(虽然这并不一定是这种情况).
UserControl
对于不熟悉的人来说,WPF
它们通常更容易,因为它们可以通过视觉设计.
我的建议是从一开始UserControl
.随着您对工作方式的熟悉程度越来越高,您可以随时将其重构为自定义控件WPF
.创建控件作为自定义控制将需要的知识ControlTemplate
S和Style
S作为你将需要提供自己的定义的外观和感觉你的控制.
完成所有操作后,只要控件行为正确,您使用哪种方法都无关紧要.
有关同一问题的两种方法的示例,请参阅此文章.帖子作者想要一个可以在主要内容前面呈现模态内容的控件.帖子作者实际上通过实施它来回答他自己的问题UserControl
.我添加了一个帖子的答案,它将控件创建为自定义控件但两者都具有相同的结束效果.
如果您有视图模型并且希望为其创建视图,请使用User-Control.
如果您需要没有特定视图模型的自治控件,则
可能需要自定义控件.
如果您发现整个需要的功能已存在于其他控件中,则需要覆盖现有控件模板.
(即:对于菱形按钮 - 您需要覆盖按钮控制模板.)
关于附加属性和附加行为,当您拥有要使用更多属性扩展的控件或希望它的行为与其默认行为略有不同时,这些属性很有用.
在所描述的OP的组合物的情况下,可以通过用户控制或定制控制来实现.我更喜欢自定义控件,因为没有提供特定的视图模型,"输入"只是绑定到项集合的属性.
哦,我很抱歉有点迟到了.