Silverlight 如何上传RadRichTextBox的内容

Silverlight 如何上传RadRichTextBox的内容,silverlight,Silverlight,我有Telerik Radrich文本框。这里是设计 <telerik:RadRichTextBox Name="radRchTxtBoxEdit" HorizontalAlignment="Stretch" VerticalAlignment="Top" BorderBrush="Black" BorderThickness="1" Background="White" LayoutMode="Flow" IsSpellCheckingEnabled="False" TextInpu

我有Telerik Radrich文本框。这里是设计

<telerik:RadRichTextBox Name="radRchTxtBoxEdit" HorizontalAlignment="Stretch"  
VerticalAlignment="Top" BorderBrush="Black" BorderThickness="1" Background="White"
LayoutMode="Flow" IsSpellCheckingEnabled="False" TextInput="radRchTxtBoxEdit_TextInput"> 


我想要富文本框内容的快照。是否有任何可能的方法拍摄RichTextBox的快照?

使用PrintDocument类,您可以拍摄(快照/打印)任何UI元素或控件。声明PrintDocument,将RadRichTextBox分配给PrintPage事件中的PageVisual。(即PrintPage=radRchTxtBoxEdit)

这是让你开始的链接


假设您希望将文档另存为图像,然后对其进行处理。以下几点应该行得通

您可以使用以下方法从任何UIElement生成位图:

WriteableBitmap GetImageForUIElement(UIElement source)
{
    WriteableBitmap bmp = new WriteableBitmap(source, null);
    bmp.Invalidate();

    return bmp;
}
不过,只需将RadRichTextBox控件输入此方法是不够的,因为它只会创建可见区域的图像

要生成整个页面
,必须深入RadRichTextBox控件的
可视树
,以找到

这将有助于找到正确的子控件:

T GetDescendent<T>(DependencyObject root) where T : DependencyObject
{
    int children = VisualTreeHelper.GetChildrenCount(root);
    for (int i = 0; i < children; i++)
    {
        var element = VisualTreeHelper.GetChild(root, i);
        if (element is T)
        {
            return (T)element;

        }
        else
        {
            element = GetDescendent<T>(element);
            if (element != null)
            {
                return (T)element;
            }
        }
    }

    return null;
}
T getsubgent(DependencyObject根),其中T:DependencyObject
{
int children=VisualTreeHelper.GetChildrenCount(根);
for(int i=0;i
可写位图可以直接用作图像控件的源, 但是没有本机方法将此对象转换为文件系统对象,但是有几个选项

  • 您可以将原始像素数据发送到web服务并在那里保存。(WriteableBitmap.Pixels)
  • 签出保存为其他图像格式的方法
  • 为了得到一个完整的答案: 这里有一些XAML要查看

    
    
    这是按钮点击处理程序

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        DocumentPagePresenter doc = GetDescendent<DocumentPagePresenter>(MyRichTextBox);
    
        if (doc != null)
        {
            MyRichTextImage.Source = GetImageForUIElement(doc);
        }
    }
    
    private void按钮\u单击(对象发送者,路由目标)
    {
    DocumentPagePresenter doc=GetDescent(MyRichTextBox);
    如果(doc!=null)
    {
    MyRichTextImage.Source=GetImageForUIElement(doc);
    }
    }
    
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        DocumentPagePresenter doc = GetDescendent<DocumentPagePresenter>(MyRichTextBox);
    
        if (doc != null)
        {
            MyRichTextImage.Source = GetImageForUIElement(doc);
        }
    }