假设我有一个搜索框,它是一个包含TextBox
和Button
图标的堆叠面板。为了更容易重复使用,我想将所述搜索框提取到一个单独的文件中。
我会用什么来包装搜索框?我将所有功能作为附加行为,因此我不需要任何代码。
ItemsControl
不适合,因为我不想显示项目,ContentControl
没有,因为我没有内容......
你能否告诉我如何在XAML中进行碎片化?我找到的唯一示例是ResourceDictionarys
,但并非所有内容都是Style
。
答案 0 :(得分:2)
我会用什么来包装搜索框?
UserControl
:https://msdn.microsoft.com/en-us/library/system.windows.controls.usercontrol(v=vs.110).aspx
如果您想通过添加现有元素(例如UserControl
和StackPanels
来构建自定义控件,那么创建TextBoxes
是一个合适的模型。
答案 1 :(得分:2)
用户控件提供了一种收集和组合不同内置控件的方法,并将它们打包成可重复使用的XAML。用户控件用于以下场景:
如果控件包含现有控件,即您可以创建多个已存在控件的单个控件。
如果控件不需要支持主题。用户控件不支持复杂的自定义,控件模板和难以设置样式。
如果开发人员更喜欢使用代码隐藏模型编写控件,其中包含视图,然后是事件处理程序的直接代码。
您不会跨应用程序共享您的控件。
自定义控件是一个提供自己的样式和模板的类,通常在generic.xaml中定义。自定义控件用于以下场景:
如果控件不存在,则必须从头开始创建。
如果您想通过添加额外的属性或额外的功能来扩展或添加预先存在的控件的功能,以适合您的特定场景。
如果您的控件需要支持主题和样式。
如果您想跨应用程序共享您的控件。
source(包括示例等)