多重绑定未设置值
Multibinding unset value
我有一个 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
的方法,但都不起作用。
尝试使用 x:Reference
标记扩展将 Tag
属性 设置为 PdfViewerCtrl
,然后绑定到 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>
我有一个 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
的方法,但都不起作用。
尝试使用 x:Reference
标记扩展将 Tag
属性 设置为 PdfViewerCtrl
,然后绑定到 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>