我需要在DataGrid的列中使用RichTextBoxes。这是通过xaml通过
完成的<DataGrid x:Name="ui_tblInputs"
Grid.Row="0" Grid.Column="2" Grid.RowSpan="3"
AutoGenerateColumns="False"
HeadersVisibility="Column"
CanUserSortColumns="False"
HorizontalAlignment="Center"
ItemsSource="{Binding InputPorts, Mode=OneWay}"
SelectedItem="{Binding SelectedInputPort}"
SelectionMode="Single"
>
<DataGrid.Columns>
<DataGridTextColumn
Header="Inputs"
Width="SizeToCells"
MinWidth="50"
Binding="{Binding Name, Mode=TwoWay}"
/>
<DataGridTemplateColumn
Header="Test Value"
Width="SizeToCells"
MinWidth="100"
>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<RichTextBox
IsReadOnly="True"
>
<FlowDocument>
<Paragraph>
<Run Text="some text"/>
</Paragraph>
</FlowDocument>
</RichTextBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
问题是,RichTextBox中的文本是出现在它自己的行上的每个字符。即。
有关为何发生这种情况的任何想法?
答案 0 :(得分:4)
您可以为DataGridTemplateColumn指定一个名称:x:Name="ThisColumn"
然后在RichTextBox中设置宽度,如下所示:
Width="{Binding ElementName=ThisColumn, Path=ActualWidth}"
更新: 好的问题是这里的错误是一个解决方法。设置&#34; FlowDocument&#34;宽度为RichTextBox宽度,取宽度为单元格。
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<RichTextBox
x:Name="My_RTB"
IsReadOnly="True">
<FlowDocument
PageWidth="{Binding ElementName=My_RTB, Path=ActualWidth}">
<Paragraph>
<Run Text="some text"/>
</Paragraph>
</FlowDocument>
</RichTextBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>