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>

 

posted on 2025-11-22 15:17  空明流光  阅读(0)  评论(0)    收藏  举报

导航