关于wpf:如何通过启用滚动使无法选择的TextBox?

How can I make unselectable TextBox with enable Scroll?

我想在WPF中启用ScrollBar来使无法选择的TextBox成为可能。

如果将IsReadOnly = True设置为True,则可以滚动,但可以选择文本。

如果我设置IsEnabled = True,则它是不可选择的,但是滚动被禁用。

IsHitTestVisible = True也是不可选择的,禁用滚动。

如何使不可选择的已启用滚动TextBox?


'IsHitTestVisible'导致文本框不活动,您不能修改其内容。 我希望下面的代码可以满足您的要求

WPF:

1
2
3
<ScrollViewer Width="120" Height="50">
        <TextBox x:Name="txBox" SelectionBrush="Transparent" ContextMenu="{x:Null}" TextWrapping="Wrap" Text="How can I make unselectable TextBox with enable Scroll?"/>
    </ScrollViewer>

如果要限制从文本框中复制文本,请另外使用以下代码。

后面的代码:

1
2
3
4
5
6
7
private void TxBox_KeyDown(object sender, KeyEventArgs e)
    {
        if (txBox.SelectedText.Length > 0)
        {
            txBox.SelectionLength = 0;
        }
    }

美好的一天 :)


您可以设置IsHitTestVisible=false并使用ScrollViewer包装文本框

1
2
3
    <ScrollViewer Width="100" Height="50">
        <TextBox IsHitTestVisible="False" TextWrapping="Wrap">asjdla jksad lkjasd jd kla sljas kdj ksald jksad ksalj dlasj lkajs ljka sajksd</TextBox>
    </ScrollViewer>