【发布时间】:2013-02-14 09:07:07
【问题描述】:
我创建了一个包含两个项目的用户控件:一个按钮和一个菜单。下面的代码是一个极其简化的版本,仍然存在同样的问题(我将在下面提到)。
<UserControl x:Class="gemsTouchLensApplication.Controls.ButtonAndMenu"
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"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<StackPanel Orientation="Horizontal">
<Button/>
<Menu/>
</StackPanel>
</UserControl>
我希望能够用这个用户控件做两件事:将项目添加到菜单和设置按钮的内容。
我希望能够以常规方式将项目添加到菜单中
<Menu>
<MenuItem Header="1"/>
<MenuItem Header="2"/>
<MenuItem Header="3"/>
<MenuItem Header="4"/>
<MenuItem Header="5"/>
etc...
</Menu>
但是,当我在将用户控件添加到堆栈面板后尝试执行此操作时
<Window>
<StackPanel>
<cntrls:ButtonAndMenu>
<MenuItem Header="1"/>
<MenuItem Header="2"/> <!--Comment this out and the error disappears-->
</cntrls:ButtonAndMenu>
</StackPanel>
</Window>
发生了意想不到的事情。我只能向用户控件添加一个项目。如果我添加多个项目,我会收到错误:
属性“内容”只能设置一次。
当只添加一个项目时,控件的视觉效果更接近于按钮,而不是菜单。
我怀疑通过向用户控件添加控件,WPF 引擎默认设置按钮的内容,而不是向菜单添加控件。
如何修改用户控件以便消费者可以:
- 使用常规符号向菜单添加项目
- 还是设置按钮的内容
【问题讨论】:
标签: c# wpf user-controls