ボタンとメニューの2つの項目でユーザーコントロールを作成しました。以下のコードはひどく単純化されたバージョンですが、それでも同じ問題があります(これについては以下で説明します)。
<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>
このユーザーコントロールで2つのことを実行できるようにしたいと思います。メニューに項目を追加することと、ボタンのコンテンツを設定することです。
従来の方法でメニューにアイテムを追加できるようにしたい
<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>
予期しないことが起こります。ユーザーコントロールに追加できるアイテムは1つだけです。複数のアイテムを追加すると、次のエラーが発生します。
プロパティ「コンテンツ」は一度だけ設定できます。
単一の項目のみが追加された場合、コントロールのビジュアルはメニューではなくボタンのビジュアルに近くなります。
ユーザーコントロールにコントロールを追加すると、WPFエンジンは、メニューにコントロールを追加するのではなく、デフォルトでボタンのコンテンツを設定するようになると思います。
コンシューマーが次のことができるように、ユーザーコントロールを変更するにはどうすればよいですか。
- 従来の表記法を使用してメニューに項目を追加します
- それでもボタンの内容を設定します