首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过VisualStates重新定位RelativePanel中的子项

通过VisualStates重新定位RelativePanel中的子项
EN

Stack Overflow用户
提问于 2016-03-03 22:59:54
回答 2查看 175关注 0票数 0

我有一个包含一群孩子的Relative Panel。我想在VisualStates中通过AdoptiveTrigger改变孩子的位置。问题是,当我想要将一个元素的位置从其他元素的下方更改到该元素的右侧时,我必须删除下面附加属性的值,然后设置RightOf属性才能使其工作,否则会导致应用程序崩溃。现在我想知道如何删除下面的值?我尝试在属性窗口中为每个状态a.reset绑定,然后将我的值b.setting该值赋给空字符串,如"";c.Ignoring该属性。这些都不起作用!请帮帮我!

EN

回答 2

Stack Overflow用户

发布于 2016-03-04 18:11:18

可以将附加的属性RelativePanel.Below设置为empty。除此之外,我们还可以通过设置AlignTopWithAlignVerticalCenterWith属性来解决这个问题。

这是因为AlignTopWith的优先级高于Below,并且对于AlignVerticalCenterWith属性,如果没有冲突就会应用它。作为我的测试,AlignVerticalCenterWith的优先级也高于Below

有关更多信息,请参阅RelativePanel类中的部分。

以下是我用来测试的示例:

代码语言:javascript
复制
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup>
            <VisualState>
                <VisualState.StateTriggers>
                    <AdaptiveTrigger MinWindowWidth="600" />
                </VisualState.StateTriggers>
                <VisualState.Setters>
                    <Setter Target="BlueRect.(RelativePanel.Below)" Value="" />
                    <Setter Target="GreenRect.(RelativePanel.RightOf)" Value="BlueRect" />
                    <Setter Target="GreenRect.(RelativePanel.Below)" Value="RedRect" />
                    <!--<Setter Target="GreenRect.(RelativePanel.AlignVerticalCenterWith)" Value="BlueRect" />-->
                    <!--<Setter Target="GreenRect.(RelativePanel.AlignTopWith)" Value="BlueRect" />-->
                </VisualState.Setters>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>

    <RelativePanel>
        <Rectangle x:Name="RedRect"
                   Width="100"
                   Height="100"
                   Fill="Red" />
        <Rectangle x:Name="BlueRect"
                   Width="100"
                   Height="200"
                   Fill="Blue"
                   RelativePanel.Below="RedRect"
                   RelativePanel.RightOf="RedRect" />
        <Rectangle x:Name="GreenRect"
                   Width="100"
                   Height="100"
                   Fill="Green"
                   RelativePanel.Below="BlueRect"
                   RelativePanel.RightOf="RedRect" />
    </RelativePanel>
</Grid>

它的工作原理如下:

票数 2
EN

Stack Overflow用户

发布于 2016-03-03 23:15:04

你可以做到

代码语言:javascript
复制
<Setter Target="SomeElement.(RelativePanel.Below)" Value="{x:Null}" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35775609

复制
相关文章

相似问题

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