将控制权保持在可见区域

时间:2011-12-05 16:40:31

标签: c# wpf

我有一个包含多个TextBox的网格。我想将这个网格固定在主窗口的底部。因此,如果用户向下滚动网格应该基本上保持在它的位置。

我想到这样做的一种方法是从ScrollViewer获取某种值并将其添加到网格Canvas.TopProperty中。但是,当用户向上或向下滚动时,我不确定哪个值会发生变化。

2 个答案:

答案 0 :(得分:3)

然后不要将滚动放在主窗口上。将ScrollViewer仅放在要滚动的内容(行)上。小心不要使用自动作为ScrollViewer或容器的行的高度将增长以支持所有内容,并且Scroll不起作用。

答案 1 :(得分:0)

一种方式:

<Window x:Class="Sample.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
<Grid>
    <ListBox>
        <!--Hardcoded listbox items just to force the scrollbar for demonstration purposes -->
        <ListBoxItem>Item1</ListBoxItem>
        <ListBoxItem>Item2</ListBoxItem>
        <ListBoxItem>Item3</ListBoxItem>
        <ListBoxItem>Item4</ListBoxItem>
        <ListBoxItem>Item5</ListBoxItem>
        <ListBoxItem>Item6</ListBoxItem>
        <ListBoxItem>Item7</ListBoxItem>
        <ListBoxItem>Item8</ListBoxItem>
        <ListBoxItem>Item9</ListBoxItem>
        <ListBoxItem>Item10</ListBoxItem>
        <ListBoxItem>Item11</ListBoxItem>
        <ListBoxItem>Item12</ListBoxItem>
        <ListBoxItem>Item14</ListBoxItem>
        <ListBoxItem>Item15</ListBoxItem>
        <ListBoxItem>Item16</ListBoxItem>
        <ListBoxItem>Item17</ListBoxItem>
        <ListBoxItem>Item18</ListBoxItem>
        <ListBoxItem>Item19</ListBoxItem>
        <ListBoxItem>Item20</ListBoxItem>
        <ListBoxItem>Item21</ListBoxItem>
        <ListBoxItem>Item22</ListBoxItem>
    </ListBox>
    <Grid Panel.ZIndex="5" VerticalAlignment="Bottom" Background="DarkGray">
        <StackPanel>
            <TextBox HorizontalAlignment="Left" VerticalAlignment="Center">Text box 1</TextBox>
            <TextBox HorizontalAlignment="Left" VerticalAlignment="Center">Text box 2</TextBox>
            <TextBox HorizontalAlignment="Left" VerticalAlignment="Center">Text box 3</TextBox>
        </StackPanel>
    </Grid>
</Grid>