首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止外部scrollviewer覆盖内部scrollviewer?

如何防止外部scrollviewer覆盖内部scrollviewer?
EN

Stack Overflow用户
提问于 2021-04-26 20:41:58
回答 1查看 36关注 0票数 1

我在我的网格中有以下部分:

代码语言:javascript
复制
<ScrollViewer   Grid.Column="4" Grid.Row="0" CanContentScroll="True"  HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
    <StackPanel Orientation="Vertical" Margin="10" HorizontalAlignment="Stretch">

        <!-- other controls such as sliders, Textboxes and so on -->

        <Border Height="200" BorderThickness="1" BorderBrush="DarkGray" Margin="5" HorizontalAlignment="Stretch">
            <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="auto" >
                <TextBlock Text="{Binding LogOutput}" Style="{StaticResource BodyTextBlockStyle}" TextWrapping="NoWrap"/>
            </ScrollViewer>
        </Border>
    </StackPanel>
</ScrollViewer>

如果我在LogOuput中添加一个非常长的文本(用"Ipsum Lorem“测试),由于某种原因,我的边框宽度增加,并且外部ScrollViewer显示一个水平滚动条。

我想要的是,边框的宽度不变(总是伸展到这个网格列的可用空间),内部的ScrollViewer应该显示水平滚动条。我知道我可以通过设置边框的固定宽度来实现这一点,但是-正如前面提到的-我希望边框伸展到可用的空间。

我如何才能做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-26 22:13:40

您可以将内部ScrallViewerWidth绑定到列的宽度:

代码语言:javascript
复制
<Border Height="200" BorderThickness="1" BorderBrush="DarkGray" Margin="5" HorizontalAlignment="Stretch"
        Width="{Binding Path=ColumnDefinitions[putColIndexHere], Converter={StaticResource ColDefinitionToWidthConverter}, ConverterParameter=30, RelativeSource={RelativeSource AncestorType=Grid}}">
    <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="auto" Background="Cyan"
                    >
        <TextBlock Text="{Binding StrTest}" TextWrapping="NoWrap"/>
    </ScrollViewer>
</Border>

Convert方法可以看起来像这样:

代码语言:javascript
复制
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{   
    if(value is System.Windows.Controls.ColumnDefinition colDef)
    {
        return colDef.ActualWidth + colDef.Offset - int.Parse(parameter as string) ;
    }
    return value;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67266838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档