Il seguente codice
<local:UserControl1>
<Button>Click me</Button>
</local:UserControl1>
Significa che si imposta la proprietà Contenuto di UserControl1
come pulsante. Questo pulsante sostituisce semplicemente il markup UserControls1
. Quindi tutte le cose che hai in UserControl1.xaml non ci sono più.
EDIT
Se si desidera che l'UserControl per ospitare un certo margine di profitto che sarà fissato da qualche parte al di fuori di esso, è possibile aggiungere un DependencyProperty
ad esso, per esempio:
/// <summary>
/// Gets or sets additional content for the UserControl
/// </summary>
public object AdditionalContent
{
get { return (object)GetValue(AdditionalContentProperty); }
set { SetValue(AdditionalContentProperty, value); }
}
public static readonly DependencyProperty AdditionalContentProperty =
DependencyProperty.Register("AdditionalContent", typeof(object), typeof(CalibrationPoint),
new PropertyMetadata(null));
e aggiungere un po elemento al suo markup per ospitare quel contenuto aggiuntivo. Ecco un esempio estendendo il markup che hai fornito:
<UserControl ... Name="userControl">
<Grid Background="LightBlue">
<Grid.RowDefinitions>
<RowDefinition Height="50" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Text="Title" FontSize="30" Margin="10,0,0,0"/>
<ContentPresenter Content="{Binding AdditionalContent, ElementName=userControl}" />
</Grid>
</UserControl>
Ora è possibile utilizzarlo come segue:
<local:UserControl1>
<local:UserControl1.AdditionalContent>
<Button>Click me</Button>
</local:UserControl1.AdditionalContent>
</local:UserControl1>
Perché utilizzare una proprietà di dipendenza aggiuntiva e non solo sostituire il modello di controllo e associarlo alla proprietà content? – codekaizen
Sono d'accordo con te. Ho visto la tua risposta subito dopo aver pubblicato la mia. Sono stato io a votare i tuoi – EvAlex
La spiegazione del perché non funziona è grandiosa, ma ho trovato la risposta di @ blindmeis come più utile. – TarkaDaal