2010-09-01 6 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> 

Выше XAML для проблемы ... У меня есть кнопка, которая при нажатии издает событие через IEventAggregator в Prism, с видом прошел, в котором что выше. Затем конвертор запускается, и значения выглядят законными. Однако я хочу, чтобы сравнение стреляло в момент, когда команда сравнения запущена выше. Но когда это происходит, объект [] имеет 2 элемента, которые являются нулевыми ... не уверены, что вызывает это?MultiBinding с Prism/RibbonControl вызывая конвертер огонь рано

ответ

0

Это по дизайну. Он будет кэшироваться, поскольку базовая ссылка FlowDocument не изменяется. Решение возвращает элементы не как простой объект [], а как новый тип. После этого значения вернутся через аргументы при выполнении команды Compare.