当单元格是RichTextBox时,从DataGrid获取RichTextBox

时间:2017-10-12 09:26:57

标签: c# wpf richtextbox

我重写我的DataGrid以使用RichTextBox作为DataGridTemplateColumn。 现在在代码后面我想从网格访问这些RichTexBox。 例如,我想获得第10行第1列的RichTextBox。 我怎么能这样做?

<DataGridTemplateColumn Header="First Language" IsReadOnly="False" Width="*">
    <DataGridTemplateColumn.CellTemplate>
         <DataTemplate>
              RichTextBox>
                   <FlowDocument IsOptimalParagraphEnabled="True" IsHyphenationEnabled="True">
                     <Paragraph FontFamily="Segoe UI" FontSize="14 ">
                           <Run Text="{Binding Path=First ,Mode=TwoWay , UpdateSourceTrigger=PropertyChanged}" />
                      </Paragraph>
                   </FlowDocument>
              </RichTextBox>
          </DataTemplate>
     </DataGridTemplateColumn.CellTemplate>
 </DataGridTemplateColumn>

更新:

使用我在下面找到的代码,我能够获得DataGridCell,但是将内容转换为RichTextBox会给我null。有什么想法吗?

https://svgvijay.blogspot.de/2013/01/how-to-get-datagrid-cell-in-wpf.html

1 个答案:

答案 0 :(得分:1)

试试这个:

int row = 0;
int column = 0;
DataGridCell cell = Datagrid.GetCell(dataGrid, row, column);
ContentPresenter cp = cell.Content as ContentPresenter;
if (VisualTreeHelper.GetChildrenCount(cp) > 0)
{
    RichTextBox rtb = VisualTreeHelper.GetChild(cp, 0) as RichTextBox;
}