WPF RichTextBox中的控件没有事件

WPF RichTextBox中的控件没有事件,wpf,focus,richtextbox,Wpf,Focus,Richtextbox,我正在使用WPF,并且在RichTextBox控件中有一个表。我需要得到表格单元格的背景颜色来改变它的焦点。我的问题是无法为TableCell触发GotFocus或任何其他事件 <RichTextBox> <FlowDocument> <Table> <Table.Columns> <TableColumn /> </Table.Col

我正在使用WPF,并且在RichTextBox控件中有一个表。我需要得到表格单元格的背景颜色来改变它的焦点。我的问题是无法为TableCell触发GotFocus或任何其他事件

<RichTextBox>
    <FlowDocument>
       <Table>
           <Table.Columns> 
              <TableColumn />
           </Table.Columns>
           <TableRowGroup>
               <TableRow>
                   <TableCell GotFocus="SelectionCell_GotFocus">
                       <Paragraph>1</Paragraph>
                   </TableCell>
               </TableRow>
           </TableRowGroup>
       </Table>
    </FlowDocument>
</RichTextBox>

1.
下图显示RichTextBox控件中的表格。我想能够做的是在用户在表格单元格之间移动时更改背景


编辑:经过进一步调查,问题并不局限于RichTextBox中的表,RichTextBox中的任何控件似乎都无法生成事件。我在它里面放了一个按钮,并没有让它触发点击事件。看起来RichTextBox屏蔽了所有事件,希望有办法解除屏蔽。

一半的答案是将RichTextBox上的IsDocumentEnabled属性设置为true。允许根据启用其中的控件。不幸的是,它仍然没有触发我需要的事件,即TableCell上的GotFocus,尽管可以通过在单元格中放置一个按钮并单击它来触发事件。这会使GotFocus事件在UI树上冒泡到TableCell。我不希望每个单元格都有一个按钮,所以是时候寻找替代方案了

<RichTextBox IsDocumentEnabled="True">
    <FlowDocument>
        <Table>
            <Table.Columns> 
                <TableColumn />
            </Table.Columns>
            <TableRowGroup>
                <TableRow>
                    <TableCell GotFocus="SelectionCell_GotFocus">
                        <BlockUIContainer>
                            <Canvas>
                                <Button Click="Button_Click">
                                    Click
                                </Button>
                            </Canvas>
                        </BlockUIContainer>
                    </TableCell>
                </TableRow>
            </TableRowGroup>
        </Table>
    </FlowDocument>
</RichTextBox>

点击

更新

我确实发现以下(在:)已尝试过,并且有效:

ContentElement是段落的基类之一,顺便说一句,它是文档中几乎所有内容的基类,它定义了您要查找的属性和事件

编码

void MyCode() 
{
    Paragraph p = new Paragraph();
    p.MouseEnter += p_MouseEnter;
}

void p_MouseEnter(object sender, EventArgs e) 
{
    Paragraph p = (Paragraph)sender;
    p.Background = Brushes.Red;
}

**In Markup**

<Paragraph MouseEnter="p_MouseEnter" />

**You can also trigger on properties like IsMouseOver in styles**
void MyCode()
{
第p段=新的第()段;
p、 鼠标指针+=p_鼠标指针;
}
void p_MouseEnter(对象发送方,事件参数e)
{
第p段=(第)段发送者;
p、 背景=画笔。红色;
}
**加价**
**您还可以在样式中的IsMouseOver等属性上触发**