CommandBarのように少し動作するコントロールを作成します。
はあなたが書くことができますコマンドバーを使用する:XAMLを使用してUserControl内のItemsControlにコントロールを追加する
<CommandBar>
<CommandBar.PrimaryCommands>
<AppBarButton>B1</AppBarButton>
<AppBarButton>B2</AppBarButton>
</CommandBar.PrimaryCommands>
</CommandBar>
私のコントロールも、XAMLの中に追加することができるコントロールする特性を有しています。このよう
:
<Page
x:Class="TheApp.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:App27"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<local:MyControl>
<local:MyControl.LeftStuff>
<Button>L1</Button>
<Button>L2</Button>
</local:MyControl.LeftStuff>
<local:MyControl.MidStuff>
<Button>M1</Button>
<Button>M2</Button>
</local:MyControl.MidStuff>
<local:MyControl.RightStuff>
<Button>R1</Button>
<Button>R2</Button>
</local:MyControl.RightStuff>
</local:MyControl>
</Grid>
</Page>
は、これまでのところ私は、次のユーザーコントロールを作ってみました。
MyControl.xaml:
<UserControl
x:Class="TheApp.MyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:App27"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
d:DesignHeight="300"
d:DesignWidth="400"
mc:Ignorable="d">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<ItemsControl Grid.Column="0" ItemsSource="{x:Bind LeftStuff}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<ItemsControl Grid.Column="1" ItemsSource="{x:Bind MidStuff}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
<ItemsControl Grid.Column="2" ItemsSource="{x:Bind RightStuff}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Grid>
</UserControl>
MyControl.xaml.cs:
namespace TheApp
{
using System.Collections.ObjectModel;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
public sealed partial class MyControl: UserControl
{
public MyControl()
{
this.InitializeComponent();
}
public static readonly DependencyProperty LeftStuffProperty =
DependencyProperty.Register("LeftStuff", typeof(ObservableCollection<FrameworkElement>), typeof(MyControl), new PropertyMetadata(null));
public ObservableCollection<FrameworkElement> LeftStuff
{
get { return (ObservableCollection<FrameworkElement>)GetValue(LeftStuffProperty); }
set { SetValue(LeftStuffProperty, value); }
}
public static readonly DependencyProperty MidStuffProperty =
DependencyProperty.Register("MidStuff", typeof(ObservableCollection<FrameworkElement>), typeof(MyControl), new PropertyMetadata(null));
public ObservableCollection<FrameworkElement> MidStuff
{
get { return (ObservableCollection<FrameworkElement>)GetValue(MidStuffProperty); }
set { SetValue(MidStuffProperty, value); }
}
public static readonly DependencyProperty RightStuffProperty =
DependencyProperty.Register("RightStuff", typeof(ObservableCollection<FrameworkElement>), typeof(MyControl), new PropertyMetadata(null));
public ObservableCollection<FrameworkElement> RightStuff
{
get { return (ObservableCollection<FrameworkElement>)GetValue(RightStuffProperty); }
set { SetValue(RightStuffProperty, value); }
}
}
}
これは、コンパイルされ、デザイナーで期待どおりメインページがレンダリングされます。
しかし、私は、コードを実行したときに、私はこの例外を取得:
タイプの例外が「Windows.UI.Xaml.Markup.XamlParseException」App27.exeで発生したが、ユーザーコードで処理されませんでした WinRT情報: 'Windows.UI.Xaml.Controls.Button'タイプのインスタンスを 'System.Collections.ObjectModel.ObservableCollection`1'のコレクションに追加できません。 [行:16位置:13] ...
何が間違っていますか?