Я хотел бы создать UserControl (в данном случае квадратную кнопку с определенными Backgroundcolors), которая может размещать собственный контент.Как использовать ContentPresenter внутри UserControl
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>
Теперь, как вы можете ожидать, что она, если я использую этот контроль внутри моей MainView Everthing работает нормально, пока я не определимся содержимое.
Использование:
<control:ModernButton Size="200" BackgroundColor="Light">
TEST
</control:ModernButton>
В этом случае "TEST" будет перекрывать все содержимое UserControl (все кнопки Template). Я предполагаю, что это происходит, потому что кнопка внутри UserControl определена как «контент» сама по себе, и она будет переопределяться при определении нового содержимого.
Итак, последний вопрос: возможно ли достичь того, что я ищу? если да: как? Как я могу «перенаправить» содержимое, которое я определяю в своем MainView, в самоопределенный ContentPresenter внутри шаблона кнопок вместо ContentPresenter UserControls?
Если это возможно, я не хочу, чтобы создать новый дп-Собственость в котором находится мой контент, например:
<controls:MordernButton Size="200" BackgroundColor="Light">
<controls:ModernButton.Content>
I don't want this, if possible
</controls:ModernButton.Content>
</controls:ModernButton>
Вы хотите сказать, что не хотите создавать новые dp для этого? – Gopichandar
Правильно - если возможно, конечно. – C4p741nZ
@ Chill-X См. Мой ответ ниже. Дайте мне знать, если вы столкнулись с какими-либо проблемами. – Gopichandar