我想将控制权与面板中心对齐,我该怎么做?
使用列定义不起作用。
RelativePanel错误:名称' MiddleSplitter'在当前上下文中不存在
<Grid x:Name="LayoutRoot">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition x:Name="MiddleSplitter"/> <!--get middle?-->
</Grid.ColumnDefinitions>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup>
<VisualState>
<VisualState.StateTriggers>
<StateTrigger IsActive="True"/> <!--just for test-->
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="AppListBox.(RelativePanel.AlignRightWith)" Value="MiddleSplitter"/>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ScrollViewer Grid.ColumnSpan="2">
<RelativePanel Margin="5">
<ListBox Name="AppListBox" Height="150" Margin="5"/>
</RelativePanel>
</ScrollViewer>
</Grid>
我 使用RelativePanel,这被简化为仅显示出现此问题的控件(AppListBox
),我不想使用其他类型的面板。
答案 0 :(得分:2)
一个简单的解决方法是在MiddleSplitter
内添加真实 RelativePanel
,而不是依赖于它之外的东西。
您可以创建超轻量级Line
元素,禁用其命中测试并将其隐藏。您可以将RelativePanel.AlignHorizontalCenterWithPanel
设置为True
,让它保持在中间位置。我将其命名为同名[{1}},因此请勿忘记从MiddleSplitter
中删除该名称。
ColumnDefinition
答案 1 :(得分:1)
AlignRightWith="name"
控件位于name
内时, RelativePanel
才有效。因此,在您的情况下,您无法使用AlignRightWith="MiddleSplitter"
据我了解您的代码,您希望将内容放在两个不同的列中,但您希望立即滚动两列。为此,您可以按照以下代码示例
<ScrollViewer>
<Grid x:Name="LayoutRoot">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<RelativePanel Margin="5" Grid.Column="1">
....
</RelativePanel>
<RelativePanel Margin="5" Grid.Column="2">
<TextBlock Text="My Text" Name="AppListBox" Height="150" Margin="5"/>
....
</RelativePanel>
</Grid>
</ScrollViewer>