Ich möchte ein UserControl erstellen (in diesem Fall ein Rechteck-Button mit definierten Hintergrundfarben), welches eigenen Inhalt hosten kann.Wie benutze ich einen ContentPresenter in einem 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>
Nun, wie Sie es erwarten kann, wenn ich diese Kontrolle in meinem Mainview verwenden Everthing ganz gut funktioniert, bis ich einige Inhalt definieren.
Verwendung:
<control:ModernButton Size="200" BackgroundColor="Light">
TEST
</control:ModernButton>
In diesem Fall "TEST" wird den gesamten Inhalt des Usercontrol (die gesamte Knopf-Schablone) außer Kraft setzen. Ich schätze, das passiert, weil der Button im UserControl selbst als "Content" definiert ist und beim Definieren eines neuen Inhalts überschrieben wird.
Die letzte Frage ist also: Ist es möglich zu erreichen, was ich suche? wenn ja: Wie? Wie kann ich den Inhalt, den ich in meiner Hauptansicht definiere, in den selbstdefinierten ContentPresenter in meiner Button-Vorlage statt in den ContentPresenter der UserControls umleiten?
Wenn möglich, möchte ich nicht eine neue dp-propery zu schaffen, die meine Inhalte hostet, zB:
<controls:MordernButton Size="200" BackgroundColor="Light">
<controls:ModernButton.Content>
I don't want this, if possible
</controls:ModernButton.Content>
</controls:ModernButton>
Sie meinen, Sie wollen nicht neue dp dafür erstellen? – Gopichandar
Korrekt - wenn möglich, natürlich. – C4p741nZ
@ Chill-X Siehe meine Antwort unten. Lassen Sie mich wissen, wenn Sie irgendwelche Probleme haben. – Gopichandar