Несвязанное значение мультисвязывания - PullRequest
0 голосов
/ 16 мая 2018

У меня есть PdfViewerView.xaml (UserControl), который содержит элемент управления с именем "PdfViewerCtrl". Теперь у меня есть ListBox с контекстным меню, и если пользователь щелкает по контекстному меню, это событие с несколькими триггерами:

<ContextMenu>
              <MenuItem Header="Löschen"/>
              <i:Interaction.Triggers>
                 <i:EventTrigger
                                    EventName="PreviewMouseDown">
                    <i:InvokeCommandAction
                                        Command="{Binding DeleteAnnotationCmd}">
                       <i:InvokeCommandAction.CommandParameter>
                          <MultiBinding Converter="{StaticResource MultiBindingConv}">
                             <Binding ElementName="PdfUserCtrl" Path="PdfViewerCtrl" />
                             <Binding RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}" Path="PdfViewerCtrl" />
                          </MultiBinding>
                       </i:InvokeCommandAction.CommandParameter>
                    </i:InvokeCommandAction>
                 </i:EventTrigger>
              </i:Interaction.Triggers>
           </ContextMenu>

Я пытаюсь передать PdfViewerCtrl (о котором я говорил в начале) в качестве параметра, но это всегда DependencyProperty.UnsetValue.

Как видите, я попробовал два способа привязки к PdfViewerCtrl, но оба не сработают.

1 Ответ

0 голосов
/ 16 мая 2018

Попробуйте установить для свойства Tag значение PdfViewerCtrl, используя расширение разметки x:Reference, а затем связать со свойством Tag ContextMenu:

<ContextMenu Tag="{x:Reference PdfViewerCtrl}">
    <MenuItem Header="Löschen"/>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="PreviewMouseDown">
            <i:InvokeCommandAction Command="{Binding DeleteAnnotationCmd}">
                <i:InvokeCommandAction.CommandParameter>
                    <MultiBinding Converter="{StaticResource MultiBindingConv}">
                        <Binding RelativeSource="{RelativeSource AncestorType=ContextMenu}" Path="Tag" />
                    </MultiBinding>
                </i:InvokeCommandAction.CommandParameter>
            </i:InvokeCommandAction>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</ContextMenu>
...