我有一个网格,我希望弹出窗口显示在一个恒定的关系,无论弹出窗口和网格的大小。我使用了一个转换器,下面是代码
< Grid Name=YParamTextBlock>
<TextBlock HorizontalAlignment="Center"/>
<Popup PlacementTarget="{Binding ElementName=YParamTextBlock}} Placement="Center">
<Popup.VerticalOffSet>
<MultiBinding Mode="OneWay" Converter="{StaticResource OffsetConverter} NotifyOnTargetChanged="True">
<Binding Mode="OneWay" ElementName="YParamTextBlock" Path="ActualHeight" NotifyOnTargetUpdated="True"/>
<Binding Mode="OneWay" RelativeSource={RelativeSource Self} Path="ActualHeight" NotifyOnTargetChanged="True"/>
</MultiBinding>
</Popup.VerticalOffset>
</Popup>
<Grid>问题是,当这两个控件第一次创建时,它们的实际高度是0.0,所以我添加了NotifyOnTargetChanged来修复它。现在,由于某些原因,NotifyOnTargetChanged修复了网格的ActualHeight的重新绑定,但弹出窗口仍然是0.0。是否有任何方式通知弹出窗口实际高度已更改?或任何其他解决此问题的方法?
发布于 2014-01-22 18:04:07
实际的高度和宽度是read-only,您不能直接绑定,您可以使用Kent Boogaart在此Answer中解释的解决方案
发布于 2014-01-22 20:31:48
为什么是多绑定?VerticalOffset是一个双精度的,所以你只需要一个绑定值。
我不知道你的转换器是做什么的,但是假设你想让它接受你的YParamTextBlock网格的ActualHeight属性,然后返回一个对应于你想要给你的弹出窗口的VerticalOffset的双精度值,那么下面的代码可能更容易遵循:
<Grid x:Name="YParamTextBlock">
<TextBlock HorizontalAlignment="Center"/>
<Popup PlacementTarget="{Binding ElementName=YParamTextBlock}}
Placement="Center"
VerticalOffset="{Binding ActualHeight, ElementName=YParamTextBlock,
Converter={StaticResource OffsetConverter}}"/>
<Grid>https://stackoverflow.com/questions/21279366
复制相似问题