[英]How to disable auto scroll on Scrollviewer for child controls
我有以下相當簡單的代碼
<Window ... Width=400 Height=400>
<ScrollViewer HorizontalScrollBarVisibility="Auto" >
<StackPanel VerticalAlignment="Top"
HorizontalAlignment="Left">
<TextBox TextWrapping="Wrap"
Margin="0,5,0,5"
Width="500"
Padding="20">Scrolling is enabled when it is necessary.
Resize the window, making it larger and smaller.</TextBox>
<StackPanel Orientation="Horizontal">
<Label Content="aswkognweklng"></Label>
<TextBox TextWrapping="Wrap"
Margin="0,5,0,5"
Width="500"
Padding="20">Scrolling is enabled when it is necessary.
Resize the window, making it larger and smaller.</TextBox>
</StackPanel>
</StackPanel>
</ScrollViewer>
</Window>
我想禁用以下行為:
=>滾動查看器將移動滾動條,以使文本框左邊框與可見窗口邊框對齊
我想禁用此自動滾動行為。 那可能嗎?
與用戶交互的默認滾動行為仍應起作用。 因此,當用戶與滾動條交互時,它應該正常滾動內容。
對的,這是可能的。 您只需要處理ScrollViewer
冒泡到第二個StackPanel
的RequestBringIntoView事件。 只需將其標記為已處理即可。
XAML:
<ScrollViewer HorizontalScrollBarVisibility="Auto" >
<StackPanel VerticalAlignment="Top"
HorizontalAlignment="Left">
<TextBox TextWrapping="Wrap"
Margin="0,5,0,5"
Width="500"
Padding="20">Scrolling is enabled when it is necessary.
Resize the window, making it larger and smaller.</TextBox>
<StackPanel Orientation="Horizontal" RequestBringIntoView="StackPanel_RequestBringIntoView">
<Label Content="aswkognweklng"></Label>
<TextBox TextWrapping="Wrap"
Margin="0,5,0,5"
Width="500"
Padding="20">Scrolling is enabled when it is necessary.
Resize the window, making it larger and smaller.</TextBox>
</StackPanel>
</StackPanel>
</ScrollViewer>
C#:
private void StackPanel_RequestBringIntoView(object sender, RequestBringIntoViewEventArgs e)
{
e.Handled = true;
}
如果我了解您對問題的描述,可以使用:
<ScrollViewer HorizontalScrollBarVisibility="Hidden" >...
也許Grid
更符合您的需求:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBox
Grid.Column="0"
Grid.ColumnSpan="2"
TextWrapping="Wrap"
AcceptsReturn="True"
VerticalScrollBarVisibility="Auto"
Height="100"
Margin="0,5,0,5"
Padding="20">Scrolling is enabled when it is necessary.
Resize the window, making it larger and smaller.</TextBox>
<Label
Content="aswkognweklng"
Grid.Column="0"
Grid.Row="1">
</Label>
<TextBox
TextWrapping="Wrap"
AcceptsReturn="True"
Height="100"
VerticalScrollBarVisibility="Auto"
Margin="0,5,0,5"
Grid.Column="1"
Grid.Row="1"
Padding="20">Scrolling is enabled when it is necessary.
Resize the window, making it larger and smaller.</TextBox>
</Grid>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.