2010-08-08 5 views
0

J'ai UserControl1 qui est un FormatButtonBar avec des boutons de format et J'ai UserControl2 qui est un DataGrid avec RichTextBoxes en tant qu'éditeurs de cellules.Lier les contrôles gui dans un UserControl à un autre UserControl et ses contrôles contenant dans WPF

Je souhaite réutiliser UserControl1 à différents endroits de mon application.

C'est ce que je veux atteindre avec le code pseudo:

<UserControl1> 
<ToggleButton Content="bold" IsChecked="{Binding IsTextBold}" Command="EditingCommands.ToggleBold" CommandTarget="{Binding ElementName=UserControl2.MyRichTextBox}" /> 
</UserControl1> 


<UserControl2> 
<DataGrid> 
    <DataGridCell x:Name="MyRichTextBox" /> 
</DataGrid> 
</UserControl2> 

Savez-vous comment la liaison doit ressembler?

Répondre

0

Vous devrez définir [ContentProperty("CustomContent")] sur votre classe UserControl en l'orientant vers une propriété de dépendance UIElement personnalisée. Ensuite, dans votre UserControl XAML, ajoutez un <ContentControl> et lier sa propriété Content à votre propriété personnalisée comme ceci:

<ContentControl 
    Content="{Binding ElementName=myUserControl, Path=CustomContent}" /> 
+0

votre ContentControl me confond, pourquoi un ContentControl ici ?? J'ai en fait 2 UserControls ... – whiteSox

+0

Peut-être que j'ai mal compris la question, mais n'essayez-vous pas de créer un UserControl que vous pouvez placer des éléments dans votre utilisation de celui-ci? ContentControl est simplement un conteneur léger pouvant être configuré pour contenir un autre UIElement. UserControls a un "bug" (ou au moins un ennui) où si vous définissez leur contenu directement, vous effacez toutes les définitions personnalisées dans le UserControl, en défaisant le point entier du UserControl, vraiment. C'est pourquoi vous devez définir un UIElement DependencyProperty personnalisé et vous lier à lui. La définition de l'attribut [ContentProperty] est juste un raccourci syntaxique. – devios1

+0

Notez également que si vous souhaitez que UserControl prenne en charge les éléments de contenu * multiple *, vous devez déclarer DependencyProperty d'une collection (UIElementCollection) et la définir comme [ContentProperty]. Si ContentProperty n'est pas une collection, vous ne pourrez pas ajouter plusieurs éléments de contenu dans XAML. – devios1

Questions connexes