У меня имеется UserControl TabPage, который задает два пустых контейнера стандартных размеров, в которые записывается пользовательское содержимое через свойства ControlPanelItem и FormItem.
Код:
<UserControl x:Class="EmbeddedControlTest.TabPage"
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"
xmlns:local="clr-namespace:EmbeddedControlTest"
mc:Ignorable="d"
>
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="200"/>
<ColumnDefinition MinWidth="500"/>
</Grid.ColumnDefinitions>
<ContentControl x:Name="ControlPanelContainer" Grid.Column="0" Content="{Binding ControlPanelItem, RelativeSource={RelativeSource AncestorType=local:TabPage}}"/>
<ContentControl x:Name="PageContainer" Grid.Column="1" Content="{Binding FormItem, RelativeSource={RelativeSource AncestorType=local:TabPage}}"/>
</Grid>
</UserControl>
Далее пример кода, где в TabPage вставляются пользовательские элементы ControlPanel и Form:
<Window x:Class="EmbeddedControlTest.MainWindow"
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:EmbeddedControlTest"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<TabControl>
<TabItem>
<TabItem.Header>Заголовок</TabItem.Header>
<TabItem.Content>
<local:TabPage>
<local:TabPage.ControlPanelItem>
<local:ControlPanel/>
</local:TabPage.ControlPanelItem>
<local:TabPage.FormItem>
<local:Form/>
</local:TabPage.FormItem>
</local:TabPage>
</TabItem.Content>
</TabItem>
</TabControl>
</Grid>
</Window>
В принципе разметка работает, но я хотел бы вместо такой лесенки с тэгами прописать UserControl ControlPanel и Form как атрибуты в корневом теге local:TabPage. Наподобие:
<TabControl>
<TabItem>
<TabItem.Header>Заголовок</TabItem.Header>
<TabItem.Content>
<local:TabPage ControlPanelItem="{StaticResource local:ControlPanel}" FormItem="{StaticResource local:Form}" />
</TabItem.Content>
</TabItem>
</TabControl>
Но не знаю правильного синтаксиса. Возможно ли что-либо подобное средствами XAML?
