如何创建可能包含C#/ WPF中的其他元素的UserControl

时间:2015-05-14 19:47:21

标签: c# wpf user-controls

我想创建一个UserControl(比如ItemsControl),里面可能包含多个元素。

我想像这样使用这个UserControl:

<local:MyUserControl Margin="10,34,10,10" Background="#FF202020">
    <local:OtherUserControl Background="#FF202020" SelectedBackground="#FF303030" />
    <local:OtherUserControl Background="#FF202020" SelectedBackground="#FF303030" />
    <local:OtherUserControl Background="#FF202020" SelectedBackground="#FF303030" />
    <local:OtherUserControl Background="#FF202020" SelectedBackground="#FF303030" />
    <local:OtherUserControl Background="#FF202020" SelectedBackground="#FF303030" />
</local:MyUserControl>

我应该在XAML写什么才能让它像我需要的那样工作?你能给我一些代码的例子吗?

2 个答案:

答案 0 :(得分:1)

UserControls(在WPF中)将呈现单个子项,但该子项(取决于您使用的控件类型)可以具有子项。例如,如果您将StackPanel添加到用户控件,则StackPanel可能有多个子项。

WPF中的所有控件都将呈现单个子项,除非该控件是一个布局控件,如GridStackPanelCanvasDockPanel等...

这是另一个使用StackPanel的例子:

<UserControl x:Class="Drawing.Views.BidForm"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
        >
  <StackPanel>
     <Label FontWeight="Bold" HorizontalContentAlignment="Center"  > Item1</Label>
     <Label FontWeight="Bold"  HorizontalContentAlignment="Center"  >Item2</Label>
   </StackPanel>
</UserControl>

答案 1 :(得分:0)

您需要从ItemsControl派生您的控件。 UserControl仅提供单个Content元素。

或者,您的UserControl可以公开可以将其他控件绑定到其内容的布局元素。