0

私はWPFを初めて使用するので、無知を許してください。この問題を約30分以上グーグルで調べてみましたが、私のシナリオに合った簡単な解決策が見つからないようです。

基本的には、サーバーから行を読み取る IRC アプリを作成し、ニックネームとメッセージを読み取ります。そして、次のような行を入れます:

<Nick> Message typed...

<Nick>太字の部分が欲しいです。そして後でおそらく色で。また、for each ループを実行する例をいくつか見ましたが、1000 行以上あり、誰かが何かを入力するたびに foreach ループを実行すると、非効率ではないでしょうか?

最善/最も簡単なアプローチについてアドバイスしてください... C#プログラミング側から。

これが私のコードです:

    private void OnChannelMessage(object sender, IrcEventArgs e)
    {
        if (!txtActivity.Dispatcher.CheckAccess())
        {
            txtActivity.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate()
                  {
                      txtActivity.AppendText(string.Format("<Bold><{0}:{1}></Bold> {2}\n", e.Data.Channel, e.Data.Nick, e.Data.Message));

                      //Paragraph p = new Paragraph();
                      //p.Inlines.Add(new Bold(new Run(string.Format("<{0}> ", e.Data.Nick))));
                      //p.Inlines.Add(new Run(string.Format("{0}\n", e.Data.Message)));
                      //txtActivity.Document.Blocks.Add(p); // problem adds a big space between lines.
                  }
            ));
        }
    }

XAML:

<Grid>
    <RichTextBox Name="txtActivity" VerticalScrollBarVisibility="Auto" Margin="12,12,12,41" BorderThickness="2" FontFamily="Consolas">
        <RichTextBox.Resources>
            <Style TargetType="{x:Type Paragraph}">
                <Setter Property="Margin" Value="0"/>
            </Style>
        </RichTextBox.Resources>
    </RichTextBox>
    <Button Content="Quit" Height="23" HorizontalAlignment="Left" Margin="628,371,0,0" Name="btnQuit" VerticalAlignment="Top" Width="50" Click="btnQuit_Click" />
</Grid>
4

1 に答える 1

0

FlowDocument を使用します。多くの書式設定を含むマークアップをサポートしています。

FlowDocument

于 2012-05-11T22:46:59.797 に答える