Telerik Forums
UI for WPF Forum
1 answer
59 views

Hi,

We are getting an exception when trying to set the CaretPosition in a RadDocument.

The Document is created in code:


        public void PurchaseTemplate()
        {
            try
            {
                RadDocumentEditor editor = new RadDocumentEditor(doc_text.Document);
                string[] rowName = new string[] { "Make", "Model", "Technical Spec.", "Order No.", "Date Ordered", "Date Delivered", "Price", "Payment Method", "Supplier", "Tel.", "Other Details", "Manufacturer", "Tel.", "Other Details", "Guarantee", "Period", "Expiry Date", "Notes" };

                TableWidthUnit w1 = new TableWidthUnit(180);    // Date
                TableWidthUnit w2 = new TableWidthUnit(500);    // Day

                TableCell cell1 = new TableCell();
                TableCell cell2 = new TableCell();

                TableRow row = new TableRow();
                Paragraph p1 = new Paragraph();
                Span s1 = new Span();
                string subject = " ";
                if (_selelement != null)
                {
                    subject = _selelement.GetAttribute("title");
                }


                Table table = new Table();
                table.StyleName = RadDocumentDefaultStyles.DefaultTableGridStyleName;
                table.Tag = "5000";
                table.Rows.ElementAdded += doc_text_DiaryChanged;

                cell1.Background = Color.FromRgb(242, 219, 219);
                cell1.PreferredWidth = w1;
                cell1.Padding = new Telerik.Windows.Documents.Layout.Padding(3, 6, 3, 6);
                s1.FontWeight = FontWeights.Bold;
                s1.FontFamily = new FontFamily(CGlobals.docu_default_font);
                s1.FontSize = Unit.PointToDip(CGlobals.docu_default_font_size);
                s1.Text = "Item";
                p1.Inlines.Add(s1);
                cell1.Blocks.Add(p1);

                p1 = new Paragraph();
                s1 = new Span();
                cell2.Background = Color.FromRgb(242, 219, 219);
                cell2.PreferredWidth = w2;
                cell2.Padding = new Telerik.Windows.Documents.Layout.Padding(3, 6, 3, 6);
                s1.FontWeight = FontWeights.Bold;
                s1.FontFamily = new FontFamily(CGlobals.docu_default_font);
                s1.FontSize = Unit.PointToDip(CGlobals.docu_default_font_size);
                s1.Text = subject;
                p1.Inlines.Add(s1);
                cell2.Blocks.Add(p1);

                row.Cells.Add(cell1);
                row.Cells.Add(cell2);
                table.Rows.Add(row);
                int nRow = 0;
                foreach (string name in rowName)
                {
                    row = new TableRow();
                    cell1 = new TableCell();
                    cell2 = new TableCell();
                    switch (nRow)
                    {
                        default:
                            p1 = new Paragraph();
                            s1 = new Span();
                            cell1.Background = Color.FromRgb(255, 255, 255);
                            cell1.PreferredWidth = w1;
                            cell1.Padding = new Telerik.Windows.Documents.Layout.Padding(3, 6, 3, 6);
                            s1.FontWeight = FontWeights.Bold;
                            s1.FontFamily = new FontFamily(CGlobals.docu_default_font);
                            s1.FontSize = Unit.PointToDip(CGlobals.docu_default_font_size);
                            s1.Text = name;
                            p1.Inlines.Add(s1);
                            cell1.Blocks.Add(p1);

                            p1 = new Paragraph();
                            s1 = new Span();
                            cell2.Background = Color.FromRgb(255, 255, 255);
                            cell2.PreferredWidth = w2;
                            cell2.Padding = new Telerik.Windows.Documents.Layout.Padding(3, 6, 3, 6);
                            s1.FontFamily = new FontFamily(CGlobals.docu_default_font);
                            s1.FontSize = Unit.PointToDip(CGlobals.docu_default_font_size);
                            s1.Text = " ";
                            p1.Inlines.Add(s1);
                            cell2.Blocks.Add(p1);

                            row.Cells.Add(cell1);
                            row.Cells.Add(cell2);
                            table.Rows.Add(row);
                            break;
                        case 9:
                        case 10:
                        case 12:
                        case 13:
                        case 15:
                        case 16:
                            DocumentList bullets = new DocumentList(DefaultListStyles.Bulleted, doc_text.Document);
                            p1 = new Paragraph();
                            s1 = new Span();
                            cell1.Background = Color.FromRgb(255, 255, 255);
                            cell1.PreferredWidth = w1;
                            cell1.Padding = new Telerik.Windows.Documents.Layout.Padding(3, 6, 3, 6);
                            s1.FontFamily = new FontFamily(CGlobals.docu_default_font);
                            s1.FontSize = Unit.PointToDip(CGlobals.docu_default_font_size);
                            s1.Text = name;
                            p1.Inlines.Add(s1);
                            bullets.AddParagraph(p1);
                            cell1.Blocks.Add(p1);

                            p1 = new Paragraph();
                            s1 = new Span();
                            cell2.Background = Color.FromRgb(255, 255, 255);
                            cell2.PreferredWidth = w2;
                            cell2.Padding = new Telerik.Windows.Documents.Layout.Padding(3, 6, 3, 6);
                            s1.FontFamily = new FontFamily(CGlobals.docu_default_font);
                            s1.FontSize = Unit.PointToDip(CGlobals.docu_default_font_size);
                            s1.Text = " ";
                            p1.Inlines.Add(s1);
                            cell2.Blocks.Add(p1);

                            row.Cells.Add(cell1);
                            row.Cells.Add(cell2);
                            table.Rows.Add(row);
                            break;
                        case 17:
                            p1 = new Paragraph();
                            s1 = new Span();
                            cell1.Background = Color.FromRgb(255, 255, 255);
                            cell1.PreferredWidth = w1;
                            cell1.Padding = new Telerik.Windows.Documents.Layout.Padding(3, 6, 3, 6);
                            cell1.RowSpan = 7;
                            s1.FontWeight = FontWeights.Bold;
                            s1.FontFamily = new FontFamily(CGlobals.docu_default_font);
                            s1.FontSize = Unit.PointToDip(CGlobals.docu_default_font_size);
                            s1.Text = name;
                            p1.Inlines.Add(s1);
                            cell1.Blocks.Add(p1);

                            p1 = new Paragraph();
                            s1 = new Span();
                            cell2.Background = Color.FromRgb(255, 255, 255);
                            cell2.PreferredWidth = w2;
                            cell2.Padding = new Telerik.Windows.Documents.Layout.Padding(3, 6, 3, 6);
                            s1.FontFamily = new FontFamily(CGlobals.docu_default_font);
                            s1.FontSize = Unit.PointToDip(CGlobals.docu_default_font_size);
                            s1.Text = " ";
                            p1.Inlines.Add(s1);
                            cell2.Blocks.Add(p1);

                            row.Cells.Add(cell1);
                            row.Cells.Add(cell2);
                            table.Rows.Add(row);
                            for (int x = 0; x < 6; x++)
                            {
                                row = new TableRow();
                                cell2 = new TableCell();
                                p1 = new Paragraph();
                                s1 = new Span();
                                cell2.Background = Color.FromRgb(255, 255, 255);
                                cell2.PreferredWidth = w2;
                                cell2.Padding = new Telerik.Windows.Documents.Layout.Padding(3, 6, 3, 6);
                                s1.FontFamily = new FontFamily(CGlobals.docu_default_font);
                                s1.FontSize = Unit.PointToDip(CGlobals.docu_default_font_size);
                                s1.Text = " ";
                                p1.Inlines.Add(s1);
                                cell2.Blocks.Add(p1);
                                row.Cells.Add(cell2);
                                table.Rows.Add(row);
                            }
                            break;
                    }
                    nRow++;

                }
                editor.InsertTable(table);

                // Insert a field so we can identify the type of template
                //var cell = table.EnumerateChildrenOfType<TableCell>().FirstOrDefault();
                var cell = table.EnumerateChildrenOfType<TableCell>().FirstOrDefault();
                if (cell != null)
                {
                    DocumentPosition position = new DocumentPosition(doc_text.Document);
                    position.MoveToDocumentElementStart(cell.Blocks.First());
                    DocumentVariableField docVariable = new DocumentVariableField() { VariableName = "5000" };
                    editor.InsertField(docVariable);
                }
                doc_text.Document.DocumentVariables["5000"] = "";
                var field = doc_text.Document.EnumerateChildrenOfType<FieldRangeStart>().Where(x => x.Field.FieldTypeName == "DOCVARIABLE"
                && ((DocumentVariableField)x.Field).VariableName == "5000").FirstOrDefault();
                if (field != null)
                {
                    doc_text.UpdateField(field);
                }
                // Add the Datepickers
                var hrow5 = table.EnumerateChildrenOfType<TableRow>().ToList()[5];
                var hrow6 = table.EnumerateChildrenOfType<TableRow>().ToList()[6];
                var hrow17 = table.EnumerateChildrenOfType<TableRow>().ToList()[17];
                AddPurchaseDatePicker(table, hrow5);
                AddPurchaseDatePicker(table, hrow6);
                AddPurchaseDatePicker(table, hrow17);
            }
            catch (Exception e)
            {
                CGlobals cg = new CGlobals();
                cg.ShowError("TemplateHandler:PurchaseTemplate Error\n" + e.Message, 3);

            }
        }

We are then trying to insert a DateProperties into 3 cells in the table created using AddPurchaseDatePicker(Table, TableRow) :


        public void AddPurchaseDatePicker(Table table, TableRow row)
        {
            try
            {
                RadDocument document = doc_text.Document;
                RadDocumentEditor editor = new RadDocumentEditor(document);
                var dateCell = row.Cells.ToList()[1];
                DocumentPosition position = new DocumentPosition(document);
                string dateVal = string.Empty;

                var span = dateCell.EnumerateChildrenOfType<Span>().FirstOrDefault();
                if (span != null)
                {
                    dateVal = span.Text;
                    span.Text = " ";
                }
                position.MoveToDocumentElementStart(dateCell.Blocks.First());
                document.CaretPosition.MoveToPosition(position);
                editor.ChangeFontFamily(new FontFamily(CGlobals.docu_default_font));
                editor.ChangeFontSize(Unit.PointToDip(CGlobals.docu_default_font_size));
                DateProperties dataProperties = new DateProperties();
                try
                {
                    dataProperties.FullDate = DateTime.Parse(dateVal);
                }
                catch { }
               
                dataProperties.IsTemporary = false;
                dataProperties.StyleName = "TemplateFields";
                editor.InsertStructuredDocumentTag(dataProperties);
                doc_text.Document = document;
                table.Rows.ElementAdded += doc_text_NoteChanged;
            }
            catch { }
        }

When we try and set the CaretPosition with 

document.CaretPosition.MoveToPosition(position);

we recieve the following exception:

System.InvalidOperationException
  HResult=0x80131509
  Message=inline does not belong to this document.
  Source=Telerik.Windows.Controls.RichTextBox
  StackTrace:
   at Telerik.Windows.Documents.Model.RadDocument.GetContainingAnnotationRanges[TRangeStart](Inline inline, Predicate`1 filter, Boolean inclusive)
   at Telerik.Windows.Documents.Model.RadDocument.GetContainingAnnotationRanges[TRangeStart](Inline inline, Boolean inclusive)
   at Telerik.Windows.Documents.DocumentPosition.get_IsPositionInSkipPositionRange()
   at Telerik.Windows.Documents.DocumentPosition.get_IsValidPosition()
   at Telerik.Windows.Documents.DocumentPosition.Validator.EnsureValidPosition(DocumentPosition position, Func`1 shouldSearchForward)
   at Telerik.Windows.Documents.DocumentPosition.OnPositionChanged()
   at Telerik.Windows.Documents.Utils.SuspendChangingAndChangedActionCounter.InvokeChangedActionInternal()
   at Telerik.Windows.Documents.Utils.SuspendChangingAndChangedActionCounter.InvokeChanged()
   at Telerik.Windows.Documents.DocumentPosition.MoveToPosition(DocumentPosition newPosition)
   at DocuPraxis.MainWindow.AddPurchaseDatePicker(Table table, TableRow row) in E:\Source\Repos\Panarc\DocuPraxisTel\DocuPraxis\DocuPraxisTemplateHandler.cs:line 1634

We are using a similar method to add DateProperties in other generated documents without problem, e.g.:


        public void AddNotesDatePicker(Table table, TableRow row)
        {
            try
            {
                RadDocument document = doc_text.Document;
                RadDocumentEditor editor = new RadDocumentEditor(document);
                var dateCell = row.Cells.ToList()[0];
                DocumentPosition position = new DocumentPosition(document);
                string dateVal = string.Empty;
                
                var span = dateCell.EnumerateChildrenOfType<Span>().FirstOrDefault();
                if (span != null)
                {
                    dateVal = span.Text;
                    if(String.IsNullOrEmpty(dateVal) || dateVal == " " )
                    {
                        dateVal = DateTime.Now.ToString("dd/MM/yyyy");
                    }
                    span.Text = " ";
                }
                position.MoveToDocumentElementStart(dateCell.Blocks.First());
                document.CaretPosition.MoveToPosition(position);
                editor.ChangeFontFamily(new FontFamily(CGlobals.docu_default_font));
                editor.ChangeFontSize(Unit.PointToDip(CGlobals.docu_default_font_size));
                DateProperties dataProperties = new DateProperties();
                dataProperties.FullDate = DateTime.Parse(dateVal);
                dataProperties.IsTemporary = false;
                dataProperties.StyleName = "TemplateFields";
                editor.InsertStructuredDocumentTag(dataProperties);
                doc_text.Document = document;
                table.Rows.ElementAdded += doc_text_NoteChanged;
            }
            catch { }
        }
What are we doing wrong?
Dimitar
Telerik team
 answered on 07 Oct 2024
0 answers
70 views

hi

I was using RadWindow as my main window.

it was correctly in the 2019 version but after updating to the new version the preview stopped showing.

What should I do to solve the problem?

------------------------------------------------

i found my answer in https://docs.telerik.com/devtools/wpf/controls/radwindow/how-to/use-radwindow-as-user-control

i must add

Style="{StaticResource RadWindowStyle}" 

to radwindow prperty

smr
Top achievements
Rank 1
 updated question on 06 Oct 2024
0 answers
65 views

Hi Team,

I need to stop refreshing once the filter is applied.

Example.I have lot of items in one panel ,If I selected item1 in that panel and applied filter in the RadPropertyGrid  for some fields.

And then I will select sencond item in the grid.Now,the RadPropertyGrid  should display the filtered fields but it showing entire fileds.

How to achieve this.

Or give me a solution to set the text for the searchasyoutype textbox from codebehind

 

Kanagaraj
Top achievements
Rank 1
 asked on 04 Oct 2024
1 answer
45 views
I was playing around with RadTreeMap and was able to show some data. I decided to move the newly classes for data and viewmodels around the project to the suitable locations. Now my TypeDefinitions can't recognize the names I am passing in. What's the format? How to point RadTreeMap TypeDefinition's TargetTypeName to a type in different namespace? And if that type lives in another Assembly f.e?
Sergii
Top achievements
Rank 1
Iron
 answered on 03 Oct 2024
1 answer
64 views
hello
I used desktop alert. The height of my desktop alerts is different, and the sum of their height is sometimes higher than the height of the monitor. User closes Desktop Alert 
 And then it scrolls automatically and the rest is displayed. 
1. How can I find out which Desktop Alert is being viewed by the user on the monitor and which Desktop Alert is not visible due to the large number of Desktop Alerts? Sometimes I want to close all the desktop alerts that the user sees on the monitor so that the rest is displayed, and so on.
2. If the number of desktop alerts is large and their total height is greater than the height of the monitor, is it possible to display the scroll so that the user can see the entire desktop alert by scrolling?
Martin Ivanov
Telerik team
 answered on 03 Oct 2024
1 answer
56 views
When dragging over a timeslot in RadScheduleView. The Drag over visual showing the start and end times are always shown in 12h Format. Even though my PC locale is set to 24h format.


When dragging over the 15:00 slot, It shows 3PM and 5PM instead of 15:00 and 17:00. The timeruler correctly shows the same format as my PC locale but the drag over visual seems to always be 12h.

Stenly
Telerik team
 answered on 02 Oct 2024
0 answers
57 views

Can you please help me to creating  a custom connect.

Can you give me a small example as shown in below picture.

Parth
Top achievements
Rank 1
Iron
Iron
 updated question on 02 Oct 2024
0 answers
99 views

Hello,

 

I have an application where I store and add messages from the database. On startup I manually ladd the last so much messages from the database.

When I initially load, all messages and TimeBreaks are displayed fine. However the last message is not in view. The Chat shows the first lines and the scroll bar is positioned at the top, not at the bottom.

When I add new messages via the inputline, the message is in view

I use Telereik 2024.3.821.462

These message are added using the followin code:

View (code behind) => SendMessage event

 private void RadChat_SendMessage(object sender, SendMessageEventArgs e)
 {
     e.Handled = true;
     var updatedMessageText = (e.Message as TextMessage).Text;
     ViewModel.AddMessage(updatedMessageText);
 }

ViewModel => AddMessages

public async void AddMessage(string updatedMessageText)
{
    Message newMessage = new Message();
    newMessage.Author = CurrentAuthor.Name;
    newMessage.MessageDate = DateTime.Now;
    newMessage.MessageText = updatedMessageText;

    newMaxMessageId = _dashboardDao.InsertMessages(newMessage);

    ReadMessages();

}

private async void ReadMessages()
{
    IsReloading = true;
    newMaxMessageId = _dashboardDao.GetMaxMessageID();

    if (newMaxMessageId > currentMaxMessageId)
    {

        IEnumerable<Message> newMessages = await _dashboardDao.GetNewMessages(currentMaxMessageId, _sharedVM.NumMessageBoardMessages);
        newMessages = newMessages.OrderBy(x => x.MessageId).ToList();

        if (newMessages.Count() > 0)
        {
            if (!IsActive)
            {
                if (_ShowNewMessages)
                {
                    numNewMessages += newMessages.Count();
                    HasMessagesData hasMessagesData = new HasMessagesData(true, numNewMessages);
                    _sharedVM.HasMessages = hasMessagesData;
                }
                else
                {
                    numNewMessages = 0;
                }
            }
            else
            {
                numNewMessages= 0;
            }
        
            NewTextMessages = new ObservableCollection<TextMessageModel>();
    
            newMessages = newMessages.Where(x => x.MessageId > currentMaxMessageId);
            NewTextMessages.Clear();
            foreach (Message message in newMessages)
            {
                if (message.Author == CurrentUser)
                {
                    NewTextMessages.Add(new TextMessageModel() { Text = message.MessageText, Author = CurrentAuthor, CreationDate = message.MessageDate });
                }
                else
                {
                    NewTextMessages.Add(new TextMessageModel() { Text = message.MessageText, Author = new Author(message.Author), CreationDate = message.MessageDate });
                }
                if (_ShowNewMessages)
                {
                    _eventAggregator.GetEvent<NewMessageShownEvent>().Publish();
                }

            }
            currentMaxMessageId = newMessages.Last().MessageId;
            OnPropertyChanged(nameof(NewTextMessages));
        }
    }
    _ShowNewMessages = true;
    IsReloading = false;
}

View (code behind) triggerd by OnPropertyChanged(nameof(NewTextMessages))

his.ViewModel.PropertyChanged += (sender, args) =>
{

    if (args.PropertyName == "NewTextMessages")
    {
        AddNewMessages();
    }
};

 

private void AddNewMessages()
{

    foreach (var newMessage in ViewModel.NewTextMessages)
    {
        if (chat.LastMessage == null)
        {
            this.chat.AddTimeBreak(newMessage.CreationDate.DayOfWeek.ToString() + " " + newMessage.CreationDate.ToString("MMMM") + " " +  newMessage.CreationDate.Day.ToString() + ", " + newMessage.CreationDate.Year);
        }
        else
        {
            if ((chat.LastMessage.CreationDate.Year != newMessage.CreationDate.Year) || (chat.LastMessage.CreationDate.Month!= newMessage.CreationDate.Month) || (chat.LastMessage.CreationDate.Day != newMessage.CreationDate.Day))
            {
                this.chat.AddTimeBreak(newMessage.CreationDate.DayOfWeek.ToString() + " " + newMessage.CreationDate.ToString("MMMM") + " " + newMessage.CreationDate.Day.ToString() + ", " + newMessage.CreationDate.Year);
            }
        }
        var textMessage = new TextMessage(newMessage.Author, newMessage.Text, "sent", newMessage.CreationDate);
        this.chat.AddMessage(textMessage);
    }
}

Jochem
Top achievements
Rank 1
 asked on 24 Sep 2024
0 answers
45 views
can you please send me a sample project to creating diagram dynamic layout algorithm using very minimum connection overlpping.
Parth
Top achievements
Rank 1
Iron
Iron
 asked on 24 Sep 2024
1 answer
78 views

Hi,

I need to add a DateField to a TableCell in a RichTextBox so that when a user clicks on the cell in the UI a calendar is displayed. 

I can see from the XAML that this is achieved by using the InsertSdtCommand with a CommandParameter of Date, how can a similar result be achieved from within the code.

Thank you.

 

 

Dimitar
Telerik team
 answered on 17 Sep 2024
Narrow your results
Selected tags
Tags
GridView
General Discussions
Chart
RichTextBox
Docking
ScheduleView
ChartView
TreeView
Diagram
Map
ComboBox
TreeListView
Window
RibbonView and RibbonWindow
PropertyGrid
DragAndDrop
TabControl
TileView
Carousel
DataForm
PDFViewer
MaskedInput (Numeric, DateTime, Text, Currency)
AutoCompleteBox
DatePicker
Buttons
ListBox
GanttView
PivotGrid
Spreadsheet
Gauges
NumericUpDown
PanelBar
DateTimePicker
DataFilter
Menu
ContextMenu
TimeLine
Calendar
Installer and Visual Studio Extensions
ImageEditor
BusyIndicator
Slider
Expander
TileList
PersistenceFramework
DataPager
TimeBar
Styling
OutlookBar
TransitionControl
Book
FileDialogs
ToolBar
ColorPicker
TimePicker
SyntaxEditor
MultiColumnComboBox
VirtualGrid
Wizard
ExpressionEditor
NavigationView (Hamburger Menu)
DesktopAlert
WatermarkTextBox
BarCode
SpellChecker
DataServiceDataSource
EntityFrameworkDataSource
RadialMenu
ChartView3D
Data Virtualization
BreadCrumb
ProgressBar
Sparkline
LayoutControl
TabbedWindow
ToolTip
CloudUpload
ColorEditor
TreeMap and PivotMap
EntityFrameworkCoreDataSource (.Net Core)
HeatMap
Chat (Conversational UI)
VirtualizingWrapPanel
Calculator
NotifyIcon
TaskBoard
TimeSpanPicker
BulletGraph
WebCam
CardView
DataBar
Licensing
FilePathPicker
PasswordBox
Rating
SplashScreen
Accessibility
Callout
CollectionNavigator
Localization
AutoSuggestBox
HighlightTextBlock
Security
TouchManager
StepProgressBar
VirtualKeyboard
Badge
OfficeNavigationBar
ExpressionParser
CircularProgressBar
SvgImage
PipsPager
SlideView
AI Coding Assistant
+? more
Top users last month
Jay
Top achievements
Rank 3
Iron
Iron
Iron
yw
Top achievements
Rank 2
Iron
Iron
Stefan
Top achievements
Rank 2
Iron
Iron
Iron
Kao Hung
Top achievements
Rank 1
Iron
Bohdan
Top achievements
Rank 2
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Jay
Top achievements
Rank 3
Iron
Iron
Iron
yw
Top achievements
Rank 2
Iron
Iron
Stefan
Top achievements
Rank 2
Iron
Iron
Iron
Kao Hung
Top achievements
Rank 1
Iron
Bohdan
Top achievements
Rank 2
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?