2010-09-01 12 views
0
<inf:WorkspaceContent.Resources> 
    <ResourceDictionary> 
     <commands:CommandReference x:Key="CompareCommandReference" Command="{Binding CompareCommand}"/> 
     <converters:FlowDocumentConverter x:Key="FlowDocConverter"/> 
    </ResourceDictionary> 
</inf:WorkspaceContent.Resources> 

<Grid x:Name="LayoutRoot"> 
    <Grid.RowDefinitions> 
     <RowDefinition/> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="Auto"/> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="0.5*"/> 
     <ColumnDefinition Width="0.5*"/> 
    </Grid.ColumnDefinitions> 
    <RichTextBox x:Name="OrigText" Margin="0,0,8,0" d:LayoutOverrides="Width"> 
     <FlowDocument> 
      <Paragraph><Run Text="The fox jumped over the hill. The fox jumped over the mountain."/></Paragraph> 
      <Paragraph><Run Text=""/></Paragraph> 
     </FlowDocument> 
    </RichTextBox> 
    <Button x:Name="OrigFileBrowse" 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"> 
     <FlowDocument> 
      <Paragraph><Run Text="The fox junped over the hill. The fax jumped over the mountain."/></Paragraph> 
     </FlowDocument> 
    </RichTextBox> 
    <Button x:Name="ModifiedFileBrowse" 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="{StaticResource CompareCommandReference}" HorizontalAlignment="Center" VerticalAlignment="Top" Width="75" Content="Compare" Grid.Row="2" Grid.ColumnSpan="2"> 
     <Button.CommandParameter> 
      <MultiBinding Converter="{StaticResource FlowDocConverter}"> 
       <Binding Path="Document" ElementName="OrigText"/> 
       <Binding Path="Document" ElementName="ModifiedText"/> 
      </MultiBinding> 
     </Button.CommandParameter> 
    </Button> 
</Grid> 

Au-dessus est le XAML pour le problème ... J'ai un bouton qui, une fois cliqué sur un événement via publie IEventAggregator dans Prism, avec la vue dans laquelle est passé ce qui est au dessus. Le convertisseur se déclenche alors et les valeurs semblent légitimes. Cependant, je veux que la comparaison se déclenche au moment où la commande de comparaison est déclenchée au-dessus. Mais quand cela arrive l'objet [] a 2 éléments qui sont tous les deux null ... pas sûr de ce qui cause cela?MultiBinding avec Prism/RibbonControl provoquant le convertisseur au feu tôt

Répondre

0

Ceci est voulu. Il sera mis en cache car la référence FlowDocument sous-jacente ne change pas. La solution consiste à renvoyer les éléments non pas en tant qu'objet simple [] mais en tant que type nouvellement défini. Une fois que vous faites cela, les valeurs reviendront via les arguments lorsque la commande Compare est exécutée.