我有点迷失绑定.我在最后一小时尝试了很多东西,我无法列举所有这些东西.我在DataTemplate中遇到了contextMenu的问题.
解释:我有一个UserControl.它的dataContext本身就是.在这里UserControl,我有一个ItemsControl来表示超链接列表.我ItemsControl itemsSource受约束(它由对象元素组成).我重新定义了ItemsControl.ItemTemplate.在里面,我创建了一个HyperLink,TextBlock作为孩子使其工作,并在此TextBlock,我ContextMenu通过执行以下操作设置.
<TextBlock.ContextMenu>
<ContextMenu DataContext="{Binding PlacementTarget, RelativeSource={RelativeSource Self}}">
<MenuItem Header="Enregistrer la pièce jointe" Foreground="Black">
<MenuItem Header="Dans le dossier patient" Command="{Binding DataContext.SaveAttachmentIntPatientFolderCommand, RelativeSource={RelativeSource AncestorType=UserControl}}" CommandParameter="{Binding FilePath}" Foreground="Black" />
<MenuItem Header="Enregistrer sous ..." Command="{Binding DataContext.SaveAttachmentAsCommand}" CommandParameter="{Binding FilePath}" Foreground="Black" />
</MenuItem>
</ContextMenu>
</TextBlock.ContextMenu>
Run Code Online (Sandbox Code Playgroud)
所以我有
UserControl --> ItemsControl --> ItemTemplate --> HyperLink --> TextBlock --> ContextMenu --> ContextMenuItem
Run Code Online (Sandbox Code Playgroud)
我知道我的第一个相对来源不起作用,我有一个绑定错误.我想要的是绑定我的UserContorl datacontext,它具有这些命令.
我该怎么办?
谢谢
ContextMenu采用ItemsControl的DataContext,因此无法直接访问ViewModel.它也不是VisualTree的一部分,所以你不能做RelativeSource绑定.所以我们需要通过TextBlock的Tag属性获取UserControl的DataContext,然后绑定到ContextMenu.您可以参考以下代码.
<TextBlock Text="{Binding }" Tag="{Binding DataContext, RelativeSource={RelativeSource AncestorType=UserControl}}">
<TextBlock.ContextMenu>
<ContextMenu >
<MenuItem Header="Enregistrer la pièce jointe" Foreground="Black">
<MenuItem Header="Dans le dossier patient" Command="{Binding Path=PlacementTarget.Tag.SaveAttachmentIntPatientFolderCommand,
RelativeSource={RelativeSource AncestorType=ContextMenu}}"
Foreground="Black" />
<MenuItem Header="Enregistrer sous ..." Command="{Binding Path=PlacementTarget.Tag.SaveAttachmentAsCommand,
RelativeSource={RelativeSource AncestorType=ContextMenu}}"
Foreground="Black" />
</MenuItem>
</ContextMenu>
</TextBlock.ContextMenu>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1339 次 |
| 最近记录: |