WPF - 摆脱RichTextBox

时间:2015-07-03 09:05:26

标签: c# wpf xaml richtextbox dispatcher

我有一个从服务器接收消息的WPF应用程序。 我在后台工作者中侦听消息,如果有新消息到达,我会调用一个新事件。

在我的ServerMessage.xaml中,我有一个绑定到ViewModel中属性的TextBox。

<TextBox IsReadOnly="True" VerticalScrollBarVisibility="Visible" Text="{Binding ServerMessages}" />

在我的ServerMessage.xaml.cs的代码隐藏中,我听某人调用服务器消息事件。

public void serverMessage(object sender, ServerMessageEventArgs e)
{
    viewModel.ServerMessages += e.ServerMessage + "\r\n";
}

由于某些情况,我不得不切换到RichTextBox(主要是因为文本颜色和图像不同)。 遗憾的是,我无法将任何内容绑定到RichTextBox。我尝试了一些可用的扩展程序来绑定,但它们没有用。

为了让它工作,我在事件中使用了RichTextBox.Dispatcher。它看起来像这样:

RichTextBox.Dispatcher.BeginInvoke(
  System.Windows.Threading.DispatcherPriority.Normal,
  new Action(() => 
                  { 
                      TextPointer caretPos = ChatTextBox.CaretPosition.DocumentEnd;
                      new InlineUIContainer(new TextBlock() {  Text = e.ServerMessage }, caretPos);
                      RichTextBox.AppendText("\u2028");
                      RichTextBox.ScrollToEnd();
                  }
            ));

是否有可能摆脱Dispatcher并恢复绑定?

如果我使用绑定或者Dispatcher也可以获得一些东西吗?

0 个答案:

没有答案