当前位置: 首页 > news >正文

WPF 数据绑定通过 ElementName 失效后改为 Reference 正常

WPF 数据绑定通过 ElementName 失效后改为 Reference 正常

原代码如下,运行正常:
<Grid><Grid x:Name="gridMenus" Visibility="Collapsed"><Grid.ContextMenu><ContextMenu><MenuItem x:Name="menuItemOpenFile" Header="打开文件" /><MenuItem x:Name="menuItemOpenURL" Header="打开URL" /></ContextMenu></Grid.ContextMenu></Grid><Grid Background="Yellow" ContextMenu="{Binding ElementName=gridMenus, Path=ContextMenu}" />
</Grid>

改为如下代码后,无法运行了:

<fl:FlyleafHost Player="{Binding Player1}"><Grid><Grid x:Name="gridMenus" Visibility="Collapsed"><Grid.ContextMenu><ContextMenu><MenuItem x:Name="menuItemOpenFile" Header="打开文件" /><MenuItem x:Name="menuItemOpenURL" Header="打开URL" /></ContextMenu></Grid.ContextMenu></Grid><Grid Background="Yellow" ContextMenu="{Binding ElementName=gridMenus, Path=ContextMenu}" /></Grid>
</fl:FlyleafHost>

使用 Reference 绑定后正常了:

<fl:FlyleafHost Player="{Binding Player1}"><Grid><Grid x:Name="gridMenus" Visibility="Collapsed"><Grid.ContextMenu><ContextMenu><MenuItem x:Name="menuItemOpenFile" Header="打开文件" /><MenuItem x:Name="menuItemOpenURL" Header="打开URL" /></ContextMenu></Grid.ContextMenu></Grid><Grid Background="Yellow" ContextMenu="{Binding Source={x:Reference gridMenus}, Path=ContextMenu}" /></Grid>
</fl:FlyleafHost>