1

我有一个LongListSelector并在里面使用一个RichTextBox

<DataTemplate>
    <Grid>
        <RichTextBox>
            <Paragraph>
                <Run Text="{Binding Description}"/>
            </Paragraph>
        </RichTextBox>
    </Grid>
</DataTemplate>

由于数据列表很长,出现的数据有延迟RichTextBox。一切都已加载,但文本稍后出现。

LongListSelector延迟没问题,但是当我尝试通过其.ScrollTo方法滚动到特定项目时会很烦人。在Loaded表单或 LLS 的事件处理程序中(没有区别)我调用ScrollTo但它的执行完成并在屏幕上出现文本之前滚动到项目RichTextBox,所以在出现文本后,它变得更长,并且不在正确的项目了。

我想过延迟执行该ScrollTo方法,让所有内容都出现在屏幕上,但由于我的应用程序不是多线程的,所以我无法成功地实现睡眠或计时器。

我该如何解决这个问题?我怎样才能等到RichTextBox加载完成?(这是一个 WP8 应用程序)

4

2 回答 2

1

您可以尝试使用 LayoutUpdated(),它最后一次触发内容被加载。

于 2013-08-02T09:41:49.687 回答
0

尝试实现属性更改通知

public class YourClass: INotifyPropertyChanged
  {
      private string description;
      public event PropertyChangedEventHandler PropertyChanged;

      public string Description
      {
          get { return description; }
          set
          {
              description= value;
              OnPropertyChanged("Description");
          }
      }

      // Create the OnPropertyChanged method to raise the event 
      protected void OnPropertyChanged(string name)
      {
          PropertyChangedEventHandler handler = PropertyChanged;
          if (handler != null)
          {
              handler(this, new PropertyChangedEventArgs(name));
          }
      }
  }

当你设置Description = "blablabla"它会通知你的RichTextBox.

希望有帮助

于 2013-08-02T11:00:34.870 回答