当用户'鼠标悬停'时,我想在我的控件上面显示一个弹出窗口,问题是弹出窗口的内容是一个数据集的ListBox,所以我不知道控件的大小(设置边距) ,我已经尝试了弹出窗口中intellisense中列出的每个事件,但弹出窗口的ActualHeight为零(想要从Margin.Top中减去),有什么想法吗?
答案 0 :(得分:1)
为此,我建议使用工具提示。这样,您可以格式化工具提示以显示数据绑定的列表框。例如:正常的工具提示看起来像:
<sdk:Label Content="{Binding SomeBinding}" Width="Auto" Height="Auto" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<ToolTipService.ToolTip>
<ToolTip Content="Some tool tip." Name="ttSomeToolTip"></ToolTip>
</ToolTipService.ToolTip>
</sdk:Label>
我认为你在做的是:
<sdk:Label Content="{Binding SomeToolTip}" Width="Auto" Height="Auto" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
<ToolTipService.ToolTip>
<ToolTip Name="ttSomeToolTip">
<ListBox ItemsSource="{Binding MyListBoxSource}" SelectedItem="{Binding MySelectedListBoxItem,Mode=TwoWay}">
</ListBox>
</ToolTip>
</ToolTipService.ToolTip>
</sdk:Label>
我无法保证此提议的解决方案能够正常工作,但您有两个选项之一:为ToolTip定位LayoutUpdated事件并执行渲染转换矩阵以调整工具提示容器的大小。从理论上讲,工具提示应自动调整大小。因此,如果您尚未使用上述方法,请尝试并查看会发生什么。
答案 1 :(得分:0)
您必须通过Dispatcher运行代码,然后您的代码在UI线程中运行,并且您可以访问控件大小。 见here