在DataGrid中绑定RichTextBox

时间:2017-01-26 17:27:00

标签: wpf data-binding datagrid richtextbox rtf

所以我有这个WPF应用程序从数据库中提取数据并在dataGrid中显示: dataGrid

此应用程序存储rtf格式代码 [Content] 。我希望它转换 [Content] 下的每个商家信息,并将其显示在我的dataGrid内的richtextbox中。

我的XAML:

<DataGrid x:Name="dataGrid" ColumnWidth="*" HorizontalAlignment="Left" VerticalAlignment="Top" Height="512" Width="774" SelectionChanged="dataGrid_SelectionChanged" AutoGenerateColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Title}" ClipboardContentBinding="{x:Null}" Header="Ttile" Width="100" FontFamily="Segoe UI Semibold"/>
            <DataGridTemplateColumn  ClipboardContentBinding="{x:Null}" Header="Content" >
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <RichTextBox x:Name="rtb">
                            <FlowDocument Name="rtbFlowDoc" PageWidth="{Binding ElementName=rtb, Path=ActualWidth}">
                                <Paragraph>
                                    <Run Text="{Binding Content}"/>
                                </Paragraph>
                            </FlowDocument>
                        </RichTextBox>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
            <DataGridTemplateColumn ClipboardContentBinding="{x:Null}" Header="Image">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <Image Source="{Binding Files}" Width="300" Height="300" ScrollViewer.HorizontalScrollBarVisibility="Auto"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

用于将rtf转换为内容的我的C#(如何自动转换每个数据行btw?):

string rtfText = text;
byte[] byteArray = Encoding.ASCII.GetBytes(rtfText);
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(byteArray))
{
    System.Windows.Documents.TextRange tr = new System.Windows.Documents.TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
    tr.Load(ms, System.Windows.DataFormats.Rtf);
}

0 个答案:

没有答案