XAML - LayoutPanel属性'内容'设置不止一次

时间:2016-04-27 09:03:32

标签: c# wpf xaml

我正在尝试在布局面板中添加两个ComboBox,如下面的代码所示。

但我遇到了一个错误 - "属性'内容'设置不止一次"。如何在布局中添加两个组合框?

            <!--User Control Layout-->
        <dxdo:LayoutGroup x:Name="LayoutGroupTopLevel">
            <dxdo:LayoutGroup x:Name="GridViews" ItemWidth="1*" Orientation="Vertical" AllowClose="True" AllowDock="True" AllowFloat="True" AllowHide="True">

                <dxdo:LayoutPanel x:Name="Layers" Caption="User Control" ItemHeight="1*">
                 <dxdo:LayoutGroup>
                    <dxlc:LayoutItem Label="Plan Type">
                        <dxe:ComboBoxEdit Height="25" VerticalAlignment="Top" Width="200" Name="BoxEdit">
                            <dxe:ComboBoxEditItem Content="3 month"/>
                            <dxe:ComboBoxEditItem Content="2 year"/>
                        </dxe:ComboBoxEdit>
                    </dxlc:LayoutItem>

                    <dxlc:LayoutItem Label="Site">
                        <dxe:ComboBoxEdit Height="25" VerticalAlignment="Top" Width="200" Name="BoxEdit1"/>
                    </dxlc:LayoutItem>
                  </dxdo:LayoutGroup>
                </dxdo:LayoutPanel>

                <dxdo:LayoutPanel x:Name="LayoutPanel" Caption="Properties" ItemHeight="1*">
                    <dxlc:LayoutItem Label="Site">
                        <dxe:ComboBoxEdit Height="25" VerticalAlignment="Stretch" Width="200" Name="ComboBoxEdit"/>
                        <dxe:ComboBoxEdit Height="25" VerticalAlignment="Stretch" Width="200" Name="ComboBoxEdit1"/>
                    </dxlc:LayoutItem>
                </dxdo:LayoutPanel>

       </dxdo:LayoutGroup>

任何人都可以指出我犯的错误吗?

1 个答案:

答案 0 :(得分:2)

假设您正在使用DevExpress WPF控件套件,则您的错误是尝试将两个LayoutItem添加到LayoutPanel。它仅支持单个UIElementLayoutGroup作为内容(请参阅LayoutPanel documentation,部分&#34;内容&#34;)。因此,要完成目标,您应该使用LayoutGroup包装项目:

<dxdo:LayoutPanel x:Name="Layers" (...)>
    <dxdo:LayoutGroup>
        <dxlc:LayoutItem Label="Plan Type">(...)</dxlc:LayoutItem>
        <dxlc:LayoutItem Label="Site">(...)</dxlc:LayoutItem>
    </dxdo:LayoutGroup>
</dxdo:LayoutPanel>

<强>更新

正如你所指出的那样(并且它引起了我的注意)你无法直接将dxlc:LayoutItem添加到dxdo:LayoutGroup;你应该将它包装在dxdo:LayoutControlItem中(再次,它在文档中的所有内容):

<dxdo:LayoutPanel x:Name="Layers" (...)>
    <dxdo:LayoutGroup>
        <dxdo:LayoutControlItem>
            <dxlc:LayoutItem Label="Plan Type">(...)</dxlc:LayoutItem>
        </dxdo:LayoutControlItem>
        <dxdo:LayoutControlItem>
            <dxlc:LayoutItem Label="Site">(...)</dxlc:LayoutItem>
        </dxdo:LayoutControlItem>
    </dxdo:LayoutGroup>
</dxdo:LayoutPanel>

或者,您可以完全删除dxlc:LayoutItem并仅使用dxdo:LayoutControlItem(使用Caption属性而不是Label):

<dxdo:LayoutPanel x:Name="Layers" (...)>
    <dxdo:LayoutGroup>
        <dxdo:LayoutControlItem Caption="Plan Type">(...)</dxdo:LayoutControlItem>
        <dxdo:LayoutControlItem Caption="Site">(...)</dxdo:LayoutControlItem>
    </dxdo:LayoutGroup>
</dxdo:LayoutPanel>

<强>澄清

消除歧义:

  • xmlns:dxdo="http://schemas.devexpress.com/winfx/2008/xaml/docking"
  • xmlns:dxlc="http://schemas.devexpress.com/winfx/2008/xaml/layoutcontrol"