【发布时间】:2016-12-14 23:43:46
【问题描述】:
我希望创建一个自定义控件,它应该是文本框、按钮、列表框等预定义控件的组合,
请参考以下控件(只是一个示例)
<Grid.RowDefinitions>
<RowDefinition Height="30" />
<RowDefinition Height="50" />
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="300" />
<ColumnDefinition Width="100" />
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" />
<Button Grid.Column="1" Content="Add" Margin="20,0" />
</Grid>
<ListBox ItemsSource="{Binding textBox}" Grid.Row="1" Margin="0,25">
<ListBoxItem />
</ListBox>
</Grid>
我需要一个自定义控件中的控件组合。当我点击按钮时,我需要在 ListItem 中添加文本框值,最后我需要来自该控件的 List。
预期的自定义控件(只是一个示例)
<cust:MultiControl ItemsSource="{Binding stringCollection}" />
说明:
我需要从用户那里获取字符串列表。我添加了一个文本框来获取用户的输入。我添加了一个按钮来在List<string> 中添加文本。为了显示列表,我添加了一个 ListBox。
我需要一个Single控件,它应该继承这三个控件。我需要一个ItemsSource 用于双向绑定。如果List<string> 被更新,它应该更新ItemSource。
我在超过 15 个地方使用这种结构。所以,我希望将其作为自定义控件。请帮助我如何将其作为单个控件来实现?
我不需要用户控件,我需要自定义控件,请帮助我...
即使 ItemsSource 有价值,项目源 ViewModel 集合也不会更新。
【问题讨论】:
-
CustomControl 只是一个派生自 Control 的类。 UserControl 也是从 Control(间接)派生的类,因此 UserControl 是 CustomControl。 UserControl 的优点在于您可以使用 XAML 文件 + 代码轻松定义它们,而 CustomControl 只是代码。所以你真的想要一个用户控件。您只需为其添加自定义代码,例如 DependencyProperties(用于您公开的 ItemSource)和自定义逻辑。
-
您基本上需要一个工作自定义控件的示例吗?如何从头开始构建?
-
请告诉我们,您为什么不简单地制作一个CustomControl?你怎么了?如果您知道如何编写 UserControl,那么编写 CustomControl 应该没有问题...我真的不明白 what 你在问什么
-
@lokusking 我需要一个具有我在问题中提到的结构的控件。因为我需要一个
ItemSource属性来绑定List<string>。控件应具有我在问题中提到的所有功能。您可能对我的用户控制方式的要求有解决方案,然后给出您的答案。
标签: c# .net wpf xaml custom-controls