当单元格为 RichTextBox 时从 DataGrid 获取 RichTextBox
Get RichTextBox from DataGrid when cells are RichTextBox
我覆盖我的 DataGrid 以使用 RichTextBox 作为 DataGridTemplateColumn。
现在在后面的代码中,我想从网格中访问这些 RichTexBoxes。
例如我想获取第 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
试试这个:
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;
}
我覆盖我的 DataGrid 以使用 RichTextBox 作为 DataGridTemplateColumn。 现在在后面的代码中,我想从网格中访问这些 RichTexBoxes。 例如我想获取第 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
试试这个:
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;
}