<RichTextBox x:Name="OrigText" Margin="0,0,8,0" d:LayoutOverrides="Width"/>
<Button x:Name="OrigFileBrowse" Command="{Binding BrowseCommand}" CommandParameter="{Binding ElementName=OrigText, Path=Document}" HorizontalAlignment="Center" Margin="0,0,8,2.442" Width="75" Content="Browse" Grid.Row="1" d:LayoutOverrides="Height"/>
<RichTextBox x:Name="ModifiedText" Grid.Column="1" Margin="8,0,0,0"/>
<Button x:Name="ModifiedFileBrowse" Command="{Binding BrowseCommand}" CommandParameter="{Binding ElementName=ModifiedText, Path=Document}" HorizontalAlignment="Center" Width="75" Content="Browse" Grid.Row="1" Grid.Column="1" Margin="0,0,0,2.442" d:LayoutOverrides="Height"/>
<Button x:Name="Compare" Command="{Binding CompareCommand}" HorizontalAlignment="Center" VerticalAlignment="Top" Width="75" Content="Compare" Grid.Row="2" Grid.ColumnSpan="2">
<Button.CommandParameter>
<x:Array Type="RichTextBox">
<local:CompareTextView/>
</x:Array>
</Button.CommandParameter>
</Button>
Essayer d'obtenir 2 articles à passer lorsque le bouton est cliqué Comparer car il sera alors exécuter une commande comparer. Tenté de faire usage de MultiBinding cependant qui tire sur l'instanciation et donc le convertisseur se déclenche alors en conséquence. Il ne se déclenche pas lorsque je clique sur comparer et la commande de comparaison est exécutée.contrôle de référence XAML et propriétés dans x: Array
Avec cela qui ne fonctionne pas, j'essaie maintenant de référencer les contrôles dans XAML pour passer à l'intérieur d'une ArrayExtension. Pas sûr de la syntaxe ou si c'est même possible car je sais que vous ne pouvez pas lier dans ArrayExtension. Le ci-dessus échoue, car il ne peut pas construire une nouvelle vue CompareTextView, qui n'a pas de constructeur par défaut depuis que je me sers de Prism ...
assez frustrant, nous espérons que quelqu'un peut me aider ...
EDIT :
Vous voulez effacer certaines choses. Le problème n'est pas que je veux que CanExecute soit appelé à nouveau. Le problème est que lors de l'instanciation des contrôles, le convertisseur est appelé et exécuté et les valeurs sont retournées ... mais où vont-ils je n'ai aucune idée? Le convertisseur n'est jamais appelé à nouveau. Si je pouvais obtenir les références initiales au FlowDocument, tout cela serait un point discutable ... mais cela ne retourne rien en soi ... puisqu'il s'agit d'une commande ... si cela a du sens ... utilisation de MultiBinding.
<Button x:Name="Compare" Command="{Binding CompareCommand}" HorizontalAlignment="Center" VerticalAlignment="Top" Width="75" Content="Compare" Grid.Row="2" Grid.ColumnSpan="2">
<Button.CommandParameter>
<MultiBinding Converter="{StaticResource FlowDocumentConverter}">
<Binding ElementName="OrigText" Path="Document"/>
<Binding ElementName="ModifiedText" Path="Document"/>
</MultiBinding>
</Button.CommandParameter>
</Button>
MISE À JOUR:
Essayé ce que refereejoe mentionne here, faites défiler vers le bas un peu pour voir son affectation. Bien que CanExecute se déclenche continuellement, cela ne résout pas le problème. En outre, j'ai changé le MultiBinding pour être un seul élément, il revient null. Encore une fois, lorsque les feux de conversion sur instanciation les références FlowDocument sont là ...
RÉPONSE:
mention Abe qu'il était mis en mémoire cache m'a amené à essayer autre chose. Comme je savais que les références de FlowDocument étaient disponibles lorsque le convertisseur était appelé, je savais qu'ils étaient là. Quelque chose devenait encrassé. La pièce maîtresse semble être dans le convertisseur lui-même. Je retournais simplement l'objet []. Ensuite, lorsque la commande a déclenché l'argument était en effet un objet [] mais les deux éléments étaient nuls. J'ai créé une classe appelée Docs, qui possédait deux propriétés, une pour chaque référence FlowDocument. Lorsque le convertisseur a été déclenché, j'ai défini les propriétés de manière appropriée, puis j'ai renvoyé l'objet Docs. Maintenant, quand j'ai lancé la commande de comparaison, l'objet Docs était l'args et il avait la référence à la FlowDocuments juste comme j'avais besoin! Je ne sais pas si c'est par conception, mais le fait que les éléments soient perdus lors de l'utilisation de l'objet [] n'a aucun sens pour moi.
Abe, merci pour les commentaires ... de même qu'une DelegateCommand via Prism n'est pas possible? –
Ajout d'une édition en haut pour effacer certaines choses ... –
Mon exemple d'application utilisait à l'origine TextBox, car le convertisseur était plus facile à écrire. J'ai mis à jour ma réponse pour résoudre le problème avec RichTextBoxes. –