我需要在 DataGrid 的列中使用 RichTextBox。这是通过 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 内的文本显示时每个字符都在其自己的行上。 IE。
对于为什么会发生这种情况有什么想法吗?
您可以为 DataGridTemplateColumn 指定一个名称,例如:x:Name="ThisColumn"
然后在 RichTextBox 中设置宽度,如下所示:
Width="{Binding ElementName=ThisColumn, Path=ActualWidth}"
更新:
好吧,问题是一个错误,这里有一个解决方法。将“FlowDocument”宽度设置为 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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)