【发布时间】:2020-07-17 09:34:52
【问题描述】:
我需要调整网格内按钮的位置,该网格在 srollviewer 内有一个堆栈面板,这样每当滚动条出现时它应该在末尾,而当 ScrollBar 不可用时它应该在旁边最后一项。
With Horizontal Scroll Bar ,正如预期的那样,但在 Without Horizontal scroll Bar 按钮和最后一个文本框之间有间隙。如何在不影响 [With Horizontal Scroll Bar] 行为的情况下摆脱这种差距。
这里是sn-p使用的代码:
<Window x:Class="WpfApp2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp2"
mc:Ignorable="d"
Title="MainWindow" Height="300" Width="300">
<Grid>
<Grid.ColumnDefinitions >
<ColumnDefinition Width="5*" />
<ColumnDefinition Width="6"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<ScrollViewer Grid.Column="0" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled">
<StackPanel Orientation="Horizontal">
<TextBox Text="TextBox1" VerticalContentAlignment="Center"></TextBox>
<TextBox Text="TextBox2" VerticalContentAlignment="Center"></TextBox>
<TextBox Text="TextBox3" VerticalContentAlignment="Center"></TextBox>
<TextBox Text="TextBox4" VerticalContentAlignment="Center"></TextBox>
<TextBox Text="TextBox5" VerticalContentAlignment="Center"></TextBox>
<TextBox Text="TextBox6" VerticalContentAlignment="Center"></TextBox>
</StackPanel>
</ScrollViewer>
<Button Content="Button" Grid.Column="2"/>
</Grid>
</Window>
【问题讨论】:
-
使用您当前的 XAML。该按钮将始终水平保持在 ScrollViewer 旁边。那么你想要达到什么目的呢?不清楚..你能展示一些图片吗?
-
i.stack.imgur.com/0q4nM.png 在此图像中,最后一个文本框和按钮之间存在间隙。我想摆脱这个差距。我尝试将堆栈面板的宽度设为自动,但这没有帮助。
-
因为这个
<ColumnDefinition Width="6"/> -
此中间列占用空间。你可以删除它,或者让它的宽度
Auto -
实际上文本框是在堆栈面板中动态添加的。我无法控制添加了多少文本框。在我发布的示例代码中,它只有 6 个。当文本框的数量增加时,如果我将宽度保持为自动,按钮就会消失。如果我将其设置为 * 那么,如果文本框的数量减少到 1/2,则再次出现间隙(没有额外的列定义)
标签: wpf scrollviewer stackpanel