Wpf 如何在datagird中更改richtextbox中特定单词的颜色?

Wpf 如何在datagird中更改richtextbox中特定单词的颜色?,wpf,richtextbox,Wpf,Richtextbox,我想更改DataGrid中richTextBox中特定单词的颜色。 但我不知道如何在DataGrid中访问richTextBox。 我无法访问Rchtxt,这是richTextBox的名称。 有人知道吗?或者另一种改变颜色的方法 这是我的代码: <DataGrid Name="Data" AutoGenerateColumns="False" IsReadOnly="True"> <DataGrid.Columns>

我想更改DataGrid中richTextBox中特定单词的颜色。 但我不知道如何在DataGrid中访问richTextBox。 我无法访问Rchtxt,这是richTextBox的名称。 有人知道吗?或者另一种改变颜色的方法

这是我的代码:

<DataGrid Name="Data"
              AutoGenerateColumns="False" IsReadOnly="True">
        <DataGrid.Columns>
            <DataGridTemplateColumn Header="contents" x:Name="headerb">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <RichTextBox x:Name="Rchtxt" TextChanged="rtb_TextChanged">
                            <FlowDocument Name="rtbFlowDoc" PageWidth="{Binding ElementName=rtb, Path=ActualWidth}">
                                <Paragraph>
                                    <Run Text="{Binding Path=BODY}" />
                                </Paragraph>
                            </FlowDocument>
                        </RichTextBox>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>



private void rtb_TextChanged(object sender, TextChangedEventArgs e)
{
        RichTextBox rtb = (RichTextBox)sender;
        string find = "apple";

        String text = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd).Text;

        if (text.Contains(find))
        {
            foreach (Match match in Regex.Matches(text, find))
            {
                TextPointer myTextPointer1 = rtb.Document.ContentStart.GetPositionAtOffset(match.Index);
                TextPointer myTextPointer2 = myTextPointer1.GetPositionAtOffset(find.Length);

                rtb.Selection.Select(myTextPointer1, myTextPointer2);
                rtb.Selection.ApplyPropertyValue(TextElement.ForegroundProperty, new media.SolidColorBrush(media.Color.FromArgb(255, 255, 0, 0)));
            };
        }
  }

私有void rtb_TextChanged(对象发送方,textchangedventargs e)
{
RichTextBox rtb=(RichTextBox)发送方;
字符串find=“apple”;
字符串文本=新的文本范围(rtb.Document.ContentStart,rtb.Document.ContentEnd).text;
if(text.Contains(find))
{
foreach(Regex.Matches中的匹配(文本,查找))
{
TextPointer myTextPointer1=rtb.Document.ContentStart.GetPositionAtOffset(match.Index);
textpointer2=myTextPointer1.GetPositionAtOffset(find.Length);
选择(myTextPointer1,myTextPointer2);
rtb.Selection.ApplyPropertyValue(TextElement.ForegroundProperty,new media.SolidColorBrush(media.Color.FromArgb(255,255,0,0));
};
}
}

在这种情况下,发件人不是richTextBox本身吗?我想我已经解决了!但我还有一个问题。。。你能看到我的新代码吗?我的TextPointer1,2.的字符偏移量搞错了。。为什么会这样?