wpf 应用IsHitTestVisible = False时,文本框垂直滚动条不工作

64jmpszr  于 2023-02-10  发布在  其他
关注(0)|答案(1)|浏览(238)

我有下面的文本框,它的行为作为一个文本块使用Sytle:

<Style x:Key="TextBlockStyle" TargetType="{x:Type TextBox}">
    <Setter Property="Background" Value="{x:Null}" />
    <Setter Property="BorderBrush" Value="{x:Null}" />
    <Setter Property="BorderThickness" Value="0" />
    <Setter Property="Padding" Value="0" />
    <Setter Property="IsReadOnly" Value="True" />
    <Setter Property="IsTabStop" Value="False" />
    <Setter Property="VerticalAlignment" Value="Stretch" />
    <Setter Property="SnapsToDevicePixels" Value="True" />
    <Setter Property="TextWrapping" Value="Wrap" />
    <Style.Triggers>
        <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Background" Value="{x:Null}" />
        </Trigger>
    </Style.Triggers>
</Style>

<TextBox Grid.Column="1"
     BorderBrush="DarkRed"
     BorderThickness="1"
     Style="{StaticResource TextBlockStyle}"
     VerticalScrollBarVisibility="Auto"
     x:Name="MyTextBox"
     VerticalAlignment="Stretch"
     HorizontalAlignment="Stretch"
     Height="auto"
     Margin="5"
     Text="{Binding Path=Text}"
     Foreground="{Binding Path=ForegroundColor}">
</TextBox>

这种方法的问题是可以选择TextBox内容,而我不希望这样,所以在Style中我添加了一个新属性,如下所示:

<Setter Property="IsHitTestVisible" Value="False" />

所以现在不能选择文本框内容。好吧,这正是我想要的,但是现在引入了一个新的副作用。现在当垂直滚动条可见时,它处于只读模式,我不能单击垂直滚动条的向上和向下按钮。当我单击它们时,单击被忽略,什么都没有发生....那么我怎么能做文本框内容不可选,同时使垂直滚动条工作时,我点击向上和向下按钮?

zfycwa2u

zfycwa2u1#

尝试在文本框上设置ScrollViewer.VerticalScrollBarVisibility attached属性,而不是设置文本框的VerticalScrollBarVisibility。

相关问题