数据绑定后移动弹出窗口

时间:2012-02-24 06:41:13

标签: silverlight popup

当用户'鼠标悬停'时,我想在我的控件上面显示一个弹出窗口,问题是弹出窗口的内容是一个数据集的ListBox,所以我不知道控件的大小(设置边距) ,我已经尝试了弹出窗口中intellisense中列出的每个事件,但弹出窗口的ActualHeight为零(想要从Margin.Top中减去),有什么想法吗?

2 个答案:

答案 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