以编程方式更新RichTextBlock会隐藏其内容两次

时间:2018-12-05 00:59:07

标签: uwp richtextblock

在处理小型UWP应用程序时,该应用程序显示富文本并根据模型更改来更新其中的某些部分,但我偶然发现了一个非常奇怪的RichTextBlock错误。如果有人可以提供有关RichTextBlock特殊性的见解或提出解决此问题的想法,我将不胜感激。

以下是简化的复制代码和错误的用例:

    具有代码更新内容的
  • RichTextBlock可以正常工作,直到用户单击它为止。单击后,它会显示另一个更改,但在第二个更改中,内容将隐藏。

  • 此后,如果用户在现在不可见的文本中选择某些内容或按Ctr + A,则RichTextBlock将重新显示其内容,但是在第二个文本更改之后,该内容再次被隐藏。

  • 奇怪的是,尽管再次单击RichTextBlock会使内容再次消失,但使用“不做任何事情”按钮可使内容永久显示。

<Page
    x:Class="RichTextBlockTest.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Viewbox>
        <StackPanel Spacing="8" Margin="4">
            <RichTextBlock FontSize="24">
                <Paragraph>
                    <Run x:Name="timeRun">{ Time is Now }</Run>
                </Paragraph>
            </RichTextBlock>
            <Button HorizontalAlignment="Stretch">Do Nothing</Button>
        </StackPanel>
    </Viewbox>
</Page>
using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;

namespace RichTextBlockTest
{
    public sealed partial class MainPage : Page
    {
        private DispatcherTimer timer =
            new DispatcherTimer { Interval = new TimeSpan(0, 0, 1) };

        public MainPage()
        {
            InitializeComponent();
            timer.Tick += (o, e) =>
            {
                timeRun.Text = DateTime.Now.ToString("HH:mm:ss");
            };
            timer.Start();
        }
    }
}

除上述内容外,我还尝试了绑定DependencyProperty{x:Bind},还在那里而不是直接创建RunParagraph的情况。从代码中更改Run.Text-都具有相同的结果。

  • 该项目针对Windows 10版本1803(10.0; Build 17134)
  • 在运行Win 10 Pro 1803的2个机器上确认了此错误-开发和另一台干净的测试机。
  • 请注意,Windows 10 Pro 1809和Server build 1809没有显示此错误(测试时项目仍以1803为目标)。在修改文本的过程中,用户选择了文本的一部分时,RichTextBlock会显示一些文本,其中包括与上述错误类似的暂时消失,但是在1809年a)消失不是永久的,不仅需要单击,还需要一些怪癖。一个正在进行的选择,b)在灰色区域,如果用户选择的文本在应用程序运行过程中被修改,控件应该的行为如何,以及c)那里有简单而合理的解决方法,例如如果用户尝试选择某些内容,则暂停自动文本更改。

更新2018-12-11

  • VS.Net已更新为15.9.4,它还需要将1803降级(!)Microsoft.NETCore.UniversalWindowsPlatform版本从6.2.2降到6.1.9的项目。该错误在Windows 10 Pro 1803中仍然可以重现。

0 个答案:

没有答案