Binding Document

13 posts, 1 answers
  1. Rieni De Rijke
    Rieni De Rijke avatar
    170 posts
    Member since:
    Mar 2010

    Posted 30 Mar 2011 Link to this post

    I've seen a few examples -    most Silverlight  :-(     - where you bind the RadRichTextBox to an "item"-object or data from a DataBase.
    But how could this be done to a RadRichTextBox.Document.
    Say I get a datarow from a table and I want to create a new document with content/text from this datarow.

  2. bernd kopp
    bernd kopp avatar
    15 posts
    Member since:
    Dec 2009

    Posted 31 Mar 2011 Link to this post

    I second that question because I have the same problem trying your new RichTextBox for WPF.
    There is no API, no Documentation for WPF. I tried to do it logically and searching for a Text,Document,RTF Property on the Provider,FlowDocument and RichTextBox.
    I haven`t found much and this is my version of code thats not working.

    What do I wrong?

    <
    DataGridTemplateColumn Width="*" Header="Content">        <DataGridTemplateColumn.CellTemplate>             <DataTemplate>                      <Grid>                      <Grid.RowDefinitions>                          <RowDefinition Height="*" />                           <RowDefinition />                      </Grid.RowDefinitions>                                                               <telerik:RadRichTextBox Document="{Binding Content,UpdateSourceTrigger=LostFocus}" Grid.Row="0" x:Name="RTFBox" />                           <telerikProvider:RtfDataProvider  Grid.Row="1"  Rtf="{Binding ElementName=RTFBox,Path=Document}" />                   </Grid>             </DataTemplate>       </DataGridTemplateColumn.CellTemplate>   </DataGridTemplateColumn>
  3. UI for WPF is Visual Studio 2017 Ready
  4. bernd kopp
    bernd kopp avatar
    15 posts
    Member since:
    Dec 2009

    Posted 01 Apr 2011 Link to this post

    Or task ask concretely: What is the DependencyProperty I have to bind to in the Path="NameOfDependencyPropertyOfRichTextBox"

    Usually the DP would be Document or Text, but I can not find any of them.
  5. Iva Toteva
    Admin
    Iva Toteva avatar
    1319 posts

    Posted 01 Apr 2011 Link to this post

    Hello Rieni De Rijke, Bernd Kopp

    The documentation for the WPF RichTextBox is still not ready, but you can refer to the Silverlight article on data providers. The only difference is that the data providers have to be in the visual tree, like in Bernd's snippet, but he missed to bind the RichTextBox property of the data provider.
    @Bernd: Here is the revised version of your code:

    <DataTemplate>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition />
            </Grid.RowDefinitions>
            <telerik:RadRichTextBox Grid.Row="0" x:Name="RTFBox" />
            <telerikProvider:RtfDataProvider Grid.Row="1" Rtf="{Binding Content}" UpdateSourceTrigger="LostFocus" RichTextBox="{Binding ElementName=RTFBox}" />
        </Grid>
    </DataTemplate>

    You can also specify the BindingMode on the Rtf property of the data provider.

    Best wishes,

    Iva
    the Telerik team
  6. bernd kopp
    bernd kopp avatar
    15 posts
    Member since:
    Dec 2009

    Posted 01 Apr 2011 Link to this post

    Hello Iva,

    I tried your code and I get this Exception in my output window when the MIcrosoft DataGrid with YOUR templated RadRichtTextBox is created:

    A first chance exception of type 'Telerik.Windows.Documents.FormatProviders.Rtf.Exceptions.RtfEmptyDocumentException' occurred in Telerik.Windows.Documents.FormatProviders.Rtf.dll

    What do I wrong? With the Microsoft RichTextbox I get no exception...

  7. bernd kopp
    bernd kopp avatar
    15 posts
    Member since:
    Dec 2009

    Posted 02 Apr 2011 Link to this post

    I have also tried your RadRichTextbox with your RadGridView:

    <telerik:RadGridView>
                    <telerik:RadGridView.Columns>
                        <telerik:GridViewColumn>
                            <telerik:GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <Grid>
                                       
     
                                        <telerik:RadRichTextBox Grid.Row="0" x:Name="RTFBox" />
                                        <telerikProvider:RtfDataProvider                                       
                                            Rtf="{Binding Content}"
                                            UpdateSourceTrigger="LostFocus"
                                            RichTextBox="{Binding ElementName=RTFBox}" />
                                    </Grid>
                                </DataTemplate>
                            </telerik:GridViewColumn.CellTemplate>
                        </telerik:GridViewColumn>
                    </telerik:RadGridView.Columns>
                </telerik:RadGridView>


    and I get the same error. Why can a Document not be empty?
  8. bernd kopp
    bernd kopp avatar
    15 posts
    Member since:
    Dec 2009

    Posted 02 Apr 2011 Link to this post

    I have set RowHeight to 200px but still the RichTextBox in the DataTemplate has a Height of probably 2000px I can scroll much because I have uch RTF Text loaded.

    The binding now works to my ViewModel, but the RowHeight is totally ignored, what do I wrong?

    <telerik:RadGridView 
                    ItemsSource="{Binding PeriodListViewModel,IsAsync=True}"
                    AutoGenerateColumns="False"
                    RowHeight="200"                
                    >
                    <telerik:RadGridView.Columns>                    
                        <telerik:GridViewColumn Header="Homework">
                            <telerik:GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBox Width="100" Grid.Row="0"
                                            TextWrapping="Wrap"
                                            ScrollViewer.VerticalScrollBarVisibility="Auto"
                                            Text="{Binding Path=Homework,UpdateSourceTrigger=LostFocus}"
                                            />
                                </DataTemplate>
                            </telerik:GridViewColumn.CellTemplate>
                        </telerik:GridViewColumn>
                        <telerik:GridViewColumn Header="Content" Width="200">
                            <telerik:GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <Grid>  
                                        <telerik:RadRichTextBox Grid.Row="0" x:Name="RTFBox" />  
                                        <telerikProvider:RtfDataProvider                                       
                                            Rtf="{Binding Content}"
                                            UpdateSourceTrigger="LostFocus"
                                            RichTextBox="{Binding ElementName=RTFBox}" />
                                    </Grid>
                                </DataTemplate>
                            </telerik:GridViewColumn.CellTemplate>
                        </telerik:GridViewColumn>
                    </telerik:RadGridView.Columns>
                </telerik:RadGridView> 
  9. Rieni De Rijke
    Rieni De Rijke avatar
    170 posts
    Member since:
    Mar 2010

    Posted 03 Apr 2011 Link to this post

    I think it's still very difficult to get the binding to work.
    Could you please consider to provide a simple example in wpf. Maybe with a table?

    And...
    Say I have this text in a textbox:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Untitled</title><style type="text/css">

    .p_CC664AAA { margin: 0px 0px 12px 0px;text-align: left;text-indent: 0pt;padding: 0px 0px 0px 0px; } 
    .s_E6FD2046 { font-family: 'Verdana';font-style: Normal;font-weight: normal;font-size: 16px;color: #000000; } 
    </style></head><body><p class="p_CC664AAA"><span class="s_E6FD2046">hello</span></p></body></html>

    Now I want to show the text ("hello") in my RichTextBox Document.

    I tried to bind/copy it to a HtmlDataprovider and rebind this to the RadRichTextBox. But everytime my Document just dissapears. 
  10. Iva Toteva
    Admin
    Iva Toteva avatar
    1319 posts

    Posted 07 Apr 2011 Link to this post

    Hello Rieni De Rijke,

    Please find attached a sample demo of the use of data providers in the WPF RadRichTextBox.
    The RibbonBar at the top is bound to the first RichTextBox, whose document is bound to the view model. The two RichTextBoxes at the bottom are bound to one another.
    I hope this helps.

    Greetings,
    Iva
    the Telerik team
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
  11. Rieni De Rijke
    Rieni De Rijke avatar
    170 posts
    Member since:
    Mar 2010

    Posted 07 Apr 2011 Link to this post

    Thank you for your answer.
    I wrote:

    "...Now I want to show the text ("hello") in my RichTextBox Document.

    I tried to bind/copy it to a HtmlDataprovider and rebind this to the RadRichTextBox. But everytime my Document just dissapears. "

    In your sample, there is no Document. The text seems to lay direct on the RichTextBox.

    I thought it would be possible to open a new document and fill it up with text/html from a datarow or object.
    When I try this, the document dissapears.

                _radDocument = new RadDocument
                {
                    LayoutMode = DocumentLayoutMode.Paged,
                    ParagraphDefaultSpacingAfter = 10,
                    PageViewMargin = new SizeF(10, 10),
                    SectionDefaultPageMargin = new Padding(95)
                };
                editor.Document = _radDocument;
    And now fill it up with content from a datarow or object.

  12. Answer
    Iva Toteva
    Admin
    Iva Toteva avatar
    1319 posts

    Posted 13 Apr 2011 Link to this post

    Hi Rieni De Rijke,

    I am sorry for not making myself clear on the behavior of the rich text box and the data providers.
    RadRichTextBox has a Document property that is of type RadDocument. There is no other way to show anything in the rich text box, but to put it in a RadDocument and assign that document to the Document property of the rich text box. When you declare a RadRichTextBox in XAML and run the application, an instance of RadDocument is automatically created for you and placed inside the rich text box. When you invoke methods of the rich text box that change the contents of the document (Insert(), methods for changing the formatting, etc.), these manipulations are performed on its document.
    The format providers are able to create documents from strings/Streams that specify content in specific format. The data providers, built on top of some format providers, bind the contents of the document in the rich text box to strings in XAML, RTF, HTML or plain text format. In order to update the string property they are bound to, they use the corresponding format provider to export the document inside the rich text box. On the other hand, when they have to update the document, they import the string and create a new document, which gets assigned to the Document property of the rich text box. This is done, so that you don't need to manually create a document and fill it up with the data from data rows and other objects.
    If you plan to create the documents manually, you should not use data-binding but simply assign the document property like you did in the code-snippet.

    All the best,
    Iva
    the Telerik team
    Do you want to have your say when we set our development plans? Do you want to know when a feature you care about is added or when a bug fixed? Explore the Telerik Public Issue Tracking system and vote to affect the priority of the items
  13. Brian Stanek
    Brian Stanek avatar
    15 posts
    Member since:
    Jan 2008

    Posted 05 Feb 2014 in reply to Iva Toteva Link to this post

    Ok, now I am extremely confused and I have not found a simple WPF RadRichBox sample anywhere.  It seems that the writers for the ASP.NET AJAX samples should be giving lessons to the writes of WPF.  A getting started sample should show the minimum and provide a way to get started, not have 40 lines of ribbon code and one line of a RadRichBox that shows nothing.

    This is what I want to do:
    1) I read HTML data from the database
    2) I want the user to edit the HTML data in an WPF user control that is using MVVM.

    I admit I am a lot better in ASP.NET AJAX than WPF. But I would think that your documentation would not assume a complete understanding of WPF and would provide starting level examples.  On the ASP.NET AJAX demos/samples/documentation, I can get answers to these simple questions and then add features as I find them necessary for my project.

    So I want to use this in my XAML:

    <Label Name="lblMessage" Content="Message:" Grid.Row="2" Grid.Column="0" />
    <telerik:RadRichTextBox Name="txtMessage" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3" >
    </telerik:RadRichTextBox>

    Notice, no formatting options, no ribbon bars, etc.  I want to get it to work before I add more features.


    And then I want to do this in my View Model:

    String _message;
    public String Message
    {
        get
        {
            return this._message;
        }
        set
        {
            this._message = value;
            this.NotifyPropertyChange("Message");
        }
    }

    How do I link these two together?  The content of message is either blank or something like this:
    "The next Staff Meeting is on Friday, 11/22/2013 at 10:30am. There will be updates on:<br/>*&nbsp;3rd quarter results<br/>*&nbsp;Fronting<br/>*&nbsp;Reinsurance<br/>*&nbsp;2014 Goals<br/>*&nbsp;and Anything else that is important to the group"

    When the user changes the value, I want the property updated and able to be sent to the database.

    Another quick comment on your documentation, I spent 2 hours trying to find out how to do a simple non-data bound combo box.  I find out that it is best not to use your site for examples and that is painful to me.  I recommend your ASP.NET AJAX examples to peers and right now, I cannot on your WPF documentation or examples.
  14. Yancho
    Admin
    Yancho avatar
    72 posts

    Posted 06 Feb 2014 Link to this post

    Hi Brian,

    Thank you for contacting us!

    I am sorry to see your disappointment of our documentation, but I can assure you that we try to include everything you need to accomplish your desired scenario in it. We are open to all kind of feedback. If you feel that there is a place for improvement in a given article/s the way you want to see it please drop us a line.

    The getting started article for RadRichTextBox shows a simple use of the control, so we are not sure which is the resource you are referring to. In general, as the control comes with a lot of predefined UI we try to include such examples as well, but one basic scenario is demonstrated here. RadComboBox's getting started article shows how the control can be used with static items as well, so we'd appreciate your feedback regarding what more you'd like to see.

    To the question at hand, RadRichTextBox not only gives you the ability to display rich text content, but also helps you to import/export the same from/to different file formats. This’s why Data providers were created. A clear example of this is using RIA Services and the MVVM model for creating applications. You can decide which rich text providers is the best to your binding data. Please take a look at this article for a reference.

    If your binding data is in HTML, you should use the HtmlDataProvider. We have a SDK example which illustrates how this could be achieved with XamlDataProvider. The SDK examples are also accessible through the SDK browser and are another good developer-oriented online tool.

    I hope this helps!
    If you have any further questions or additional feedback, do not hesitate to contact us.

    Regards,
    Yancho
    Telerik
    TRY TELERIK'S NEWEST PRODUCT - EQATEC APPLICATION ANALYTICS for WPF.
    Learn what features your users use (or don't use) in your application. Know your audience. Target it better. Develop wisely.
    Sign up for Free application insights >>
Back to Top
UI for WPF is Visual Studio 2017 Ready