Я хотел бы создать UserControl (в данном случае квадратную кнопку с определенными фоновыми цветами), который может размещать собственный контент.
Пользовательский контроль:
<UserControl x:Class="SGDB.UI.Controls.ModernButton"
xmlns:local="clr-namespace:SGDB.UI.Controls"
xmlns:converter="clr-namespace:SGDB.UI.Converter"
x:Name="_modernButton">
<Button>
<Button.Resources>
<converter:EnumToColorConverter x:Key="ColorConverter"/>
</Button.Resources>
<Button.Template>
<ControlTemplate>
<Border Width="{Binding Size, ElementName=_modernButton}" Height="{Binding Size, ElementName=_modernButton}" BorderBrush="Black" BorderThickness="0.8,0.8,3,3">
<Grid Background="{Binding BackgroundColor, ElementName=_modernButton, Converter={StaticResource ColorConverter}}">
<ContentPresenter/>
</Grid>
</Border>
</ControlTemplate>
</Button.Template>
</Button>
Now, as you may expect it, if I use this Control inside my MainView everthing works just fine until I define some Content.
С использованием:
<control:ModernButton Size="200" BackgroundColor="Light">
TEST
</control:ModernButton>
В этом случае «ТЕСТ» переопределит все содержимое пользовательского элемента управления (весь шаблон кнопки). Я предполагаю, что это происходит потому, что кнопка внутри UserControl определяется как «Контент», и она будет переопределена при определении нового контента.
Итак, последний вопрос: возможно ли достичь того, что я ищу? если да: как? Как я могу «перенаправить» контент, который я определяю в своем MainView, в самоопределяемый ContentPresenter внутри моего шаблона кнопок вместо ContentPresenter UserControls?
Если возможно, я не хочу создавать новое свойство dp, в котором размещается мой контент, например:
<controls:MordernButton Size="200" BackgroundColor="Light">
<controls:ModernButton.Content>
I don't want this, if possible
</controls:ModernButton.Content>
</controls:ModernButton>