【问题标题】:WPF RichTextBox inside DataGrid format is messed upDataGrid格式内的WPF RichTextBox搞砸了
【发布时间】:2014-05-31 00:47:24
【问题描述】:

我需要在 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 中的文本与每个字符都在其自己的行上。即

对为什么会发生这种情况有任何想法吗?

【问题讨论】:

    标签: wpf datagrid richtextbox


    【解决方案1】:

    您可以给 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>
    

    【讨论】:

    猜你喜欢
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 2020-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多