En général, DataContext
dans UserControls est-il défini? Si je fais quelque chose comme ci-dessous dans mon UserControl,DataContext dans UserControls
DataContext = this
Dans ma fenêtre ou d'autres contrôles quand je veux utiliser le contrôle avec un liant, je vais avoir un RelativeSource
pour pointer vers la fenêtre/UserControl
<local:UserControl1 TextContent="{Binding Text1, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" />
est le moyen de lier des contrôles au sein UserControls: utilisation définies RelativeSource
dans UserControls au lieu de DataContext
?
<UserControl x:Class="SetCurrentValueTest.UserControl1" ...>
<TextBox Text="{Binding Path=TextContent, RelativeSource={RelativeSource AncestorType={x:Type local:UserControl1}}}" />
</UserControl>
Le second exemple ne fera rien d'autre que {Binding TextContent} sauf si vous avez défini le DataContext à quelque chose d'autre entre le UserControl et le TextBox; sinon le TextBlock hérite du DataContext. Et spécifier UserControl ou UserControl1 en tant que AncestorType fera seulement une différence s'il existe un autre UserControl d'un type différent contenu dans le UserControl1 et contenant le TextBox. –