WPF: PART_ContentHost not scrolling

本文关键字:not scrolling ContentHost PART WPF | 更新日期: 2023-09-27 18:25:02

我正在尝试在我的应用程序中创建一个日志区域,客户要求能够从该区域剪切/粘贴日志消息。

我最初使用以下内容来设置滚动日志区域,但这不允许用户选择&复制文本:

<ScrollViewer DataContext="{StaticResource Log}"
              Content="{Binding Appender.Notification}"
              Height="150">
    <ScrollViewer.Resources>
        <Style TargetType="{x:Type ScrollViewer}">
            <Setter Property="HorizontalScrollBarVisibility" Value="Auto" />
            <Setter Property="VerticalScrollBarVisibility" Value="Auto" />
        </Style>                    
    </ScrollViewer.Resources>
</ScrollViewer>

我找到了这个解决方案来创建一个只读的TextBox,其中包含可选择的文本:

    <TextBox Name="LoggingTextBox"
             Height="250"
             Width="950"
             DataContext="{StaticResource Log}"
             Text="{Binding Appender.Notification}"
             HorizontalScrollBarVisibility="Auto"
             VerticalScrollBarVisibility="Auto">
        <TextBox.Style>
            <Style TargetType="TextBox">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate>
                            <Border x:Name="PART_ContentHost" />
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </TextBox.Style>
    </TextBox>

这允许在日志区域内选择文本,但滚动不起作用。我添加了*ScrollBarVisibility的属性(不在原始解决方案中)。

如何使用此TextBox样式使滚动工作?

WPF: PART_ContentHost not scrolling

修复非常简单:只需将Border更改为ScrollViewer,就可以获得TextBox的标准滚动行为。