【问题标题】:wpf textblock won't display scrollbar inside tabcontrolwpf textblock不会在tabcontrol中显示滚动条
【发布时间】:2017-09-11 16:34:34
【问题描述】:

我有一个带有文本块的选项卡控件。我所做的任何事情似乎都无法使垂直滚动条正常工作。我已经用堆栈面板试过了;然后只使用文本块内的滚动查看器选项而不是外部。奇怪的是水平滚动条工作正常。这显示了垂直滚动条,但未启用。如果我将两者都设置为自动,那么即使文本比控件长,垂直滚动也不会显示。

<TabItem Header="Item Description" FontSize="14" FontWeight="DemiBold">
    <DockPanel>
        <ScrollViewer VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Auto">
            <TextBlock Text="{Binding SelectedItemText}" Padding="5" FontSize="14" TextWrapping="Wrap"
                DockPanel.Dock="Top" Height="100"  MinHeight="100"
                HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
        </ScrollViewer>
    </DockPanel>
</TabItem>

Visual Studio 2017、wpf、mvvm

【问题讨论】:

    标签: c# wpf scrollbar


    【解决方案1】:

    您可以将ScrollViewer 和TextBlock 替换为只读的TextBox:

    <TabItem Header="Item Description" FontSize="14" FontWeight="DemiBold">
        <DockPanel>
            <TextBox Text="{Binding SelectedItemText, Mode=OneWay}"
                                 TextWrapping="Wrap"
                                 Padding="5" FontSize="14"
                                 IsReadOnly="True"
                                 BorderThickness="0"
                                 Height="100"
                                 MinHeight="100"
                                 AcceptsReturn="True"
                                 SelectionBrush="{x:Null}"
                                 Cursor="Arrow"
                                 ScrollViewer.VerticalScrollBarVisibility="Auto"/>
        </DockPanel>
    </TabItem>
    

    【讨论】:

    • 嗯,不完全工作。在那里设置了高度,组件不会扩展以适应可用空间。如果没有高度,它会扩展超出可用空间并被切断,无论是否将 VerticalAlignment 设置为“Stretch”。但这比以前好多了。
    • 哇! (再次)终于想通了。我在堆栈面板中有 tabcontrol,甚至没有注意到。所以它允许 tabcontrol 尽可能大。即使我在停靠面板中进行了实际控制,外部堆栈面板也导致了问题。
    【解决方案2】:

    您已在ScrollViewer 中启用水平滚动。这意味着TextBlock 中的文本永远不会换行,因为它的父容器已经给了它无限的宽度来水平增长。尝试将HorizontalScrollBarVisibility 设置为Disabled - 这将强制文本块在水平空间不足时换行。一旦文本超出ScrollViewer 的垂直限制,如果VerticalScrollBarVisibility 设置为Auto,垂直滚动条将变为可见;如果VerticalScrollBarVisibility 设置为Visible,则垂直滚动条将变为启用状态。

    【讨论】:

    • 感谢您的回复。不幸的是,这没有帮助。我现在删除了文本换行选项,因为我实际上不希望它换行。我也将 VerticalScrollBarVisibility 设置为 Auto,但这也无济于事。
    • @Jim 我注意到您还明确设置了TextBox 的高度。它永远不会垂直增长,因此永远不会超过ScrollViewer 的高度。
    • 杰森,感谢您的回复。不幸的是,这没有帮助。我现在删除了文本换行选项,因为我实际上不希望它换行。包装是一个疏忽。我也将 VerticalScrollBarVisibility 设置为 Auto,但这也无济于事。涉及的文本实际上是代码,所以它是多行文本。前几行显示,但在字段底部下方,它们都被截断。
    • Jason,我从文本框中删除了高度选项。滚动条不起作用,现在文本框底部边框被截断。所以它在增长,但太大了。
    猜你喜欢
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 2010-11-14
    • 2015-07-01
    • 2018-06-06
    • 1970-01-01
    • 2011-08-03
    • 2014-07-23
    相关资源
    最近更新 更多