我有一群相对小组,里面有一群孩子。我想在VisualStates中通过AdoptiveTrigger更改子项的位置。 问题是,当我想将元素位置从其他元素的下方更改为该元素的右侧时,我将删除下面附加属性的值,然后设置RightOf属性以使其工作,否则它会崩溃应用程序。 现在我想现在如何删除以下值? 我试过了 a。在属性窗口中为每个状态重置绑定,然后分配我的值 b。将该值设置为空字符串,如“”; c.Ignoring该财产。 这些都不起作用! 请帮帮我!
答案 0 :(得分:2)
将附加属性RelativePanel.Below
设置为空可以正常工作。除此之外,我们还可以通过设置AlignTopWith
或AlignVerticalCenterWith
属性来解决此问题。
这是因为AlignTopWith
的优先级高于Below
,而对于AlignVerticalCenterWith
属性,如果没有冲突,则会应用它。根据我的测试,AlignVerticalCenterWith
的优先级也高于Below
。
有关详细信息,请参阅RelativePanel
课程中的Conflicting relationships部分。
以下是我用来测试的样本:
<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>
答案 1 :(得分:0)
你可以做到
<Setter Target="SomeElement.(RelativePanel.Below)" Value="{x:Null}" />