【问题标题】:WPF Textblock With Bound Text Will Not Scroll带有绑定文本的 WPF 文本块不会滚动
【发布时间】:2016-05-23 19:12:43
【问题描述】:

我的 TextBlock 中的文本绑定到我的代码中的一个元素。但是,当我第一次打开窗口时,Textblock 完全是空的。添加文本时,我需要 ScrollViewer 来允许我向下滚动文本,或者在添加更多文本时自动向下滚动。使用 MVVM,所以没有任何代码是理想的。

<StackPanel Grid.Column="0" Grid.Row="1" Margin="0 10">
    <Label Style="{StaticResource LabelStyle}">Output</Label>
    <ScrollViewer VerticalScrollBarVisibility="Visible" Height="100">
        <TextBlock ScrollViewer.CanContentScroll="True" Height="100" VerticalAlignment="Stretch" TextWrapping="Wrap" Text="{Binding Path=ProcessingOutput}"/>
    </ScrollViewer>
</StackPanel>

我怎样才能做到这一点?有没有办法更新 ScrollViewer 以便它看到更多文本超出我在 TextBlock 中看到的内容并允许用户向下滚动,或者允许我设置自动滚动功能,当通过绑定添加文本时自动向下滚动?

提前致谢!

【问题讨论】:

    标签: c# wpf xaml mvvm


    【解决方案1】:

    如果您从TextBlock 中删除Height="100",滚动条将起作用

    要在 Text 更改其他答案时使其滚动,建议使用 ScrollViwer.ScrollToBottom() 方法,例如像这样:

    <ScrollViewer Name="scroll"
                  VerticalScrollBarVisibility="Visible" 
                  Height="100">
        <TextBlock ScrollViewer.CanContentScroll="True" 
                   VerticalAlignment="Stretch" 
                   TextWrapping="Wrap" 
                   Text="{Binding Path=ProcessingOutput, NotifyOnTargetUpdated=True}"
                   TargetUpdated="Txt_OnTargetUpdated">
            </TextBlock>
    </ScrollViewer>
    
    private void Txt_OnTargetUpdated(object sender, DataTransferEventArgs e)
    {
        scroll.ScrollToBottom();
    }
    

    【讨论】:

    • 哇,我已经搜索了一整天,并且从 TextBlock 中获取高度有效!谢谢!!
    猜你喜欢
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多