MultiBinding с Prism / RibbonControl вызывает ранний запуск конвертера - PullRequest
0 голосов
/ 01 сентября 2010
    <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 элемента, которые оба равны нулю ... не знаете, что это вызывает?

1 Ответ

0 голосов
/ 09 сентября 2010

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

...