代码之家  ›  专栏  ›  技术社区  ›  Berryl

数据绑定奇数-第二次调用时未调用转换器

  •  0
  • Berryl  · 技术社区  · 16 年前

    我有一个上下文菜单,它被定义为资源并绑定到DataGrid中的SelectedItem,使用转换器获取当前项的显示名,如“Edit”或“Edit”

    对于第一个选中的项目,它工作得很好,但是在第二个项目上不调用转换器(我有一个断点,它只在第一次通过时被击中)。但是如果我在第二遍调用绑定命令,它会在新选择的实例上按其应该的方式调用。

    我将此技术用于其他ItemsControls,我无法发现任何错误。有什么想法吗?

    干杯,
    贝里尔

    资源绑定(&B)

    <ContextMenu x:Key="ProjectActivityContextMenu" x:Shared="true">
        ...
        <MenuItem Header="{Binding SelectedProjectActivity, Converter={StaticResource DeleteProjectConv}}" Command="{Binding DeleteCommand}" />
    </ContextMenu>
    

    装电线

    <DataGrid ...
        SelectedItem="{Binding SelectedProjectActivity}" 
        IsSynchronizedWithCurrentItem="True" 
        ContextMenu="{DynamicResource ProjectActivityContextMenu}"
     >
    

    更新

    <DataGrid.ContextMenu>
        <ContextMenu >
        ....
        <MenuItem Header="{Binding SelectedProjectActivity, Converter={StaticResource DeleteProjectConv}}" Command="{Binding DeleteCommand}" />
                    </ContextMenu>
    </DataGrid.ContextMenu>
    
    1 回复  |  直到 16 年前
        1
  •  0
  •   John Bowen    16 年前

    我认为您看到的只是将ContextMenu定义为资源的结果。在您真正打开菜单之前,它没有要应用绑定的DataContext,因此不会调用转换器。即使您在不打开菜单的情况下更改了几次选择,该选项也应保持不变。右键单击并打开菜单后,将应用DataContext并解析绑定。