Wpf 带有ItemsControl的工具提示不存在´;t更新数据上下文更改

Wpf 带有ItemsControl的工具提示不存在´;t更新数据上下文更改,wpf,binding,mvvm,tooltip,itemscontrol,Wpf,Binding,Mvvm,Tooltip,Itemscontrol,我被一些看起来像简单mvvm绑定的东西卡住了 我有一个带有工具提示的网格。网格的DataContext正在更改,应该更新textBlock和工具提示中的ItemsControl中的值。问题是工具提示中的列表不会更新。为了测试,我在textblock下面添加了相同的ItemsControl。此列表更新时没有问题。这里是简化的代码,只包含必要的内容(我认为是这样) 问题是:为什么第一个ItemsControl(StackPanel中的一个)会在主网格数据上下文更改时更新,而工具提示中的第二个It

我被一些看起来像简单mvvm绑定的东西卡住了

我有一个带有工具提示的网格。网格的DataContext正在更改,应该更新textBlock和工具提示中的ItemsControl中的值。问题是工具提示中的列表不会更新。为了测试,我在textblock下面添加了相同的ItemsControl。此列表更新时没有问题。这里是简化的代码,只包含必要的内容(我认为是这样)



问题是:为什么第一个ItemsControl(StackPanel中的一个)会在主网格数据上下文更改时更新,而工具提示中的第二个ItemsControl则不会更新。有什么想法或解决方案吗?

看看这个问题的
答案,也许这就是你想要的-

此外,如果您想在tooltip中设置tooltip,您可以设置工具提示的dataContext,然后它就可以工作了-

 <Grid.ToolTip>
        <ToolTip DataContext="{Binding SelectedRouting}" Style="{StaticResource ActionToolTipStyle}">
            <ItemsControl ItemsSource="{Binding RoutingActionList}" ItemTemplate="{StaticResource SingleActionTemplate}"/>
        </ToolTip>
    </Grid.ToolTip>


由于工具提示不属于控件的可视树,因此更改不会传播到它。因此,通过为工具提示设置dataContext,您可以在dataContext中为PropertyChanges设置通知。

我的最佳猜测是WPF将工具提示作为WPF中不同层的一部分读取,因此当调用PropertyChange事件时,它只在主层上被触发

尝试为ToolTip对象指定DataContext,使其收到PropertyChange通知的警报,或者尝试将其全部删除

<Grid.ToolTip>
    <ToolTip DataContext={Binding RoutingActionList}" Style="{StaticResource ActionToolTipStyle}">
        <ItemsControl ItemsSource="{Binding }" ItemTemplate="{StaticResource SingleActionTemplate}"/>
    </ToolTip>
</Grid.ToolTip>


解决方案是在RV1987提供的链接中。
内不能有
标记,它解决了我所问的问题。
无论如何,还有一个小问题。删除标记也会删除将样式指定给工具提示的可能性。无论在工具提示中放置什么,都会显示一个默认边框。将样式指定给我拥有的工具提示,即漂亮的深色背景。现在它消失了:(:(有什么想法吗?

您编写的解决方案在VS输出中给出了:找不到提供DataContext的元素…您的第一个建议在VS输出中给出了与RV1987中相同的答案,找不到提供DataContext的元素。第二次尝试几乎可以。请在下一篇文章中休息
<Grid.ToolTip>
    <ToolTip DataContext={Binding RoutingActionList}" Style="{StaticResource ActionToolTipStyle}">
        <ItemsControl ItemsSource="{Binding }" ItemTemplate="{StaticResource SingleActionTemplate}"/>
    </ToolTip>
</Grid.ToolTip>
<Grid.ToolTip>
    <ItemsControl ItemsSource="{Binding }" ItemTemplate="{StaticResource SingleActionTemplate}"/>
</Grid.ToolTip>