Vorrei creare un UserControl (in questo caso un pulsante quadrato con Backgroundcolors definiti) che può ospitare il proprio contenuto.Come utilizzare un ContentPresenter all'interno di un 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>
Ora, come ci si potrebbe aspettare che, se uso questo controllo dentro la mia MainView everthing funziona bene fino a che non definisco alcuni contenuti.
Usando:
<control:ModernButton Size="200" BackgroundColor="Light">
TEST
</control:ModernButton>
In questo caso "TEST" sovrascrivere l'intero contenuto di UserControl (l'intero pulsante Template). Immagino che ciò accada perché il Button all'interno di UserControl è definito come "Contenuto" stesso e verrà sovrascritto durante la definizione di nuovo Contenuto.
Quindi la domanda finale è: è possibile ottenere quello che sto cercando? se sì: come? Come posso "reindirizzare" il Contenuto che sto definendo nel mio MainView al ContentPresenter auto-definito all'interno del mio Button Template invece del ContentPresenter di UserControls?
Se possibile non voglio creare un nuovo DP-propery che ospita il mio contenuto, ad esempio:
<controls:MordernButton Size="200" BackgroundColor="Light">
<controls:ModernButton.Content>
I don't want this, if possible
</controls:ModernButton.Content>
</controls:ModernButton>
Vuoi dire che non vuoi creare un nuovo dp per questo? – Gopichandar
Corretto - se possibile, ovviamente. – C4p741nZ
@ Chill-X Vedi la mia risposta qui sotto. Fammi sapere se affronti problemi. – Gopichandar