我正在处理一个交互式图表,当用户点击一个数据点时,我会显示一个包含更多信息的弹出窗口。到目前为止,这个方法运行良好,弹出窗口的定义如下:
<Popup IsOpen="{Binding PopupViewModel.IsOpen}"
Placement="Mouse"
HorizontalOffset="-150">
<Popup.Resources>
<DataTemplate DataType="{x:Type ViewModels:DataPointPopUpContentViewModel}">
<Views:DataPointPopUpContentView/>
</DataTemplate>
</Popup.Resources>
<Border BorderThickness="1" BorderBrush="Black" Background="White">
<ContentPresenter Content="{Binding PopupViewModel}" />
</Border>
</Popup>
当使用Placement="Mouse"
时,弹出窗口的默认位置是鼠标光标的右下角。但是我希望弹出窗口正好位于鼠标光标的上边缘。正如你所看到的,我已经通过设置HorizontalOffset="-150"
实现了水平居中,这是固定的弹出窗口宽度(宽度=300)。对于垂直放置,我有一个问题,弹出高度不固定,因为我在其中显示了一个可变大小和纵横比的图像。因此,我试图通过添加VerticalOffset="{Binding ActualHeight}"
来将VerticalOffset
设置为pupup的ActualHeight
。不幸的是,这并不起作用。关于我做错了什么以及如何实现我的目标,有什么想法吗?
1条答案
按热度按时间jhkqcmku1#
首先你需要一个转换器:
然后尝试将
VerticalOffset
属性绑定到Popup子级的ActualHeight
:我希望它能帮助你。