首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何绑定弹出式ActualHeight

如何绑定弹出式ActualHeight
EN

Stack Overflow用户
提问于 2014-01-22 17:49:12
回答 2查看 346关注 0票数 0

我有一个网格,我希望弹出窗口显示在一个恒定的关系,无论弹出窗口和网格的大小。我使用了一个转换器,下面是代码

代码语言:javascript
复制
 < 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。是否有任何方式通知弹出窗口实际高度已更改?或任何其他解决此问题的方法?

EN

回答 2

Stack Overflow用户

发布于 2014-01-22 18:04:07

实际的高度和宽度是read-only,您不能直接绑定,您可以使用Kent Boogaart在此Answer中解释的解决方案

票数 0
EN

Stack Overflow用户

发布于 2014-01-22 20:31:48

为什么是多绑定?VerticalOffset是一个双精度的,所以你只需要一个绑定值。

我不知道你的转换器是做什么的,但是假设你想让它接受你的YParamTextBlock网格的ActualHeight属性,然后返回一个对应于你想要给你的弹出窗口的VerticalOffset的双精度值,那么下面的代码可能更容易遵循:

代码语言:javascript
复制
<Grid x:Name="YParamTextBlock">
       <TextBlock HorizontalAlignment="Center"/>
       <Popup PlacementTarget="{Binding ElementName=YParamTextBlock}} 
              Placement="Center"
              VerticalOffset="{Binding ActualHeight, ElementName=YParamTextBlock, 
                               Converter={StaticResource OffsetConverter}}"/>

<Grid>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21279366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档