Xceed Words for .NET now supports non-Windows environments in a NET5+ context. Note that a new dll, named Xceed.DrawingUtils.NET.dll, is required to make this work & should replace System.Drawing or System.Drawing.Common when using Color, Point, RectangleF, Font & similar types.
The PDF conversion process now also works in non-Windows OS like Linux. When specific fonts are not installed, the DocX.ConvertToPdf() method can receive those fonts as parameters and use them for the conversion process.
In Document, a new method, called RemoveText, can now be used to remove Text in between a starting tag and an ending tag, even when those tags are located in different paragraphs.
In Document, a new method, called UpdateTrackChangesAuthor, can now be used to change the name of the author that is currently modifying the Document when changes are tracked in said Document.
In Document, users can now choose from a range of hashing algorithms to encrypt & secure their passwords.
In Document, AES-based password encryption is now supported.
In Document, the tables underlying a Paragraph are now also inserted when inserting said Paragraph.
In Document, Custom Properties are now displayed properly when created with Xceed Words and converted to PDF using Apryse Webviewer.
In Document, Container and Paragraph, replacing multiple strings with multiple strings or DocumentElements can now be done in a single method call with the help of the new MultipleStringReplaceTextOptions and MultipleObjectReplaceTextOptions classes.
Four new methods have been added to format the DocumentElements created off parsed HTML tags.
In List, a new method, called InsertItem(), can now be used to insert a Paragraph at a specific index in a List’s given level.
In List, a new method, called InsertListItem(), can now be used to add formatted text at a specific level in a List’s given level.
In Paragraph, the Remove method now offers a new parameter that allows to decide if the Paragraph’s objects (Pictures, Tables& Charts) are kept or removed once that Paragraph is removed.
In Paragraph, inserting text with the trackChanges parameter set to true no longer affects performance when many insertions are done.
In Table Row, a new method, called ReplacePicture(), can now be used to replace a specific Picture with a new one.
Xceed Words for .NET now ensures precise spacing with improved whitespace cleaning during the HTML-to-Word conversion.
The HTML-to-Word conversion process now supports hierarchical structures for “container” tags such as <div> tags with child elements.
The HTML-to-Word conversion process now has expanded style compatibility with the inclusion of underline formatting via the <u> tag.
The HTML-to-Word conversion process now displays anchor tags.
Merging Documents using MergingOptions.Both will now rename the inserted Document’s styles only if they already exist in the target Document.
Lists numberings no longer break when merging Documents.
Protected Documents that are using the Advanced Encryption Standard (AES) for password encryption will no longer trigger exceptions when said protection is removed or said Documents are saved.
In Document, inserting a Paragraph which contains a Picture no longer results in a NullRefException when retrieving the paragraph.Pictures.Count.
In Document, removing document protection or saving Documents that use passwords starting with “qwerty” will no longer throws an incorrect password exception.
In Document, an Invalid Cast Exception no longer occurs when adding custom properties
In Paragraph, appending or inserting a page number or a page count when using chain formatting will now update said number or count at the same time as the formatting.
In PDF Conversion, the total number of pages per section is now correctly counted during the conversion process.
In PDF Conversion, Table of Contents containing Figure or Caption headings referencing texts located inside of Tables will now be able to update their page numbers properly.
In PDF Conversion, incremental letters will now be used in the resulting PDF document when an alphabetical page count is used in the original Document.
In PDF Conversion, Tables will now automatically update their Cells’ Height value so that it accommodates & displays all content properly.
In PDF Conversion, justified paragraphs containing tabulations will now align correctly before and after said tabulations.
In PDF Conversion, wrapped Tables that are located inside of another Table’s Cells are now correctly converted to PDF.
In PDF Conversion, the bullet lists now use a known font to display the bullets when not in a Windows environment.
In PDF Conversion, using multi-threading to convert multiple Documents to PDF no longer mixes the Documents’ Pictures.
In PDF Conversion, setting a level 2 ListItem before setting ListItems corresponding to either level 0 or 1 no longer throws an IndexOutOfRangeException.
In PDF Conversion, Pictures located in a Fallback section of the ooxml document will no longer throw an invalid format exception.
In Table, merging Cells now also merges their Borders.
In Table of Contents, the “h”, “o” & “c” switches (“\h”, “\o”, “\c”) are now respected, which means that hyperlinks, Heading styles, as well as “Figure” & “Table” will now also be properly respected.
In Table of Contents, the Paragraphs that use the “Caption” style will now be considered as valid headers & will thus be added as items in the Table of Contents.
A new control, called DatePicker, is now available & allows to increment, decrement or edit a date; it also allows to pick a date directly from a popup Calendar control.
A new control, called DateTimePicker, is now available & allows to directly edit, or simply increase & decrease, the selected date and time; it also offers a popup which allows to pick up a date in a Calendar or select a time value through Spinners.
A new control, called DateUpDown, is now available & allows to increment, decrement or edit a Date.
A new control, called TimePicker, is now available & allows to increment, decrement or edit a Time value; it also allows to pick a value directly from the popup Carousel controls.
A new control, called TimeUpDown, is now available & allows to increment, decrement or edit a Time value.
A new LiveExplorer, which shows all the available controls with options to dynamically modify their properties, is now available.
In Calendar, a new property, called CalendarHeaderButtonStyle, now allows to customize the Header button.
In Calendar, a new property, called CalendarNextButtonStyle, now allows to customize the Next button.
In Calendar, a new property, called CalendarPreviousButtonStyle, now allows to customize the Previous button.
The Border control has been replaced with Border handlers specific to each platform to increase the loading time of all Controls using the Border.
All controls now respect the new Microsoft standards & compile correctly when used with the latest version of Visual Studio.
When opening an application and clicking on some parts of a control, the focus no longer automatically goes to the first focusable control on the page.
In AutoCompleteTextBox, picking an option, clearing it via the Clear button and picking it again now works as expected.
In Border, modifying the BorderThickness dynamically to get a non-uniform Thickness now updates the Border’s size properly.
In Calendar, all the properties & methods that used a DateTime type will now use a DateOnly type instead, since the Time attribute is not necessary when selecting a date.
In Calendar for Windows, using the Tab key will no longer tab between all the CalendarDayButtons.
In Calendar, both CalendarDayButton & CalendarButton now derive from Label instead of Button, which optimizes performances on some platforms.
In Card, a framework modification was made so that the ShadowBrush, ShadowOffset, ShadowOpacity and ShadowRadius properties now work properly when they are set.
In Chart, when the DataPointMarkerTemplate (for LineChart) or the SeriesTemplate (for BarChart) is redefined, clicking on it now gives access to the associated DataPoint.
In Chart, clicking on either the DataPointMarkerTemplate (for a line Chart) or the SeriesTemplate (for a bar Chart) once they are redefined will now give access to their associated DataPoint.
In Chart, clearing the collection of DataPoints before adding new DataPoints to a line Chart will now keep its line visible.
In ColorCanvas for iOS, the sliders can now be tapped to modify an RGBA value.
In ContentControl, the BindingContext will now correctly update when the ContentTemplate changes.
In DropDownButton for Windows, modifying the DropDownLocation dynamically will now work as expected.
In Expander the ExpandDirectionEnum was renamed ExpandDirection.
In MaskedTextBox for Windows, using a Cut action will no longer result in an exception.
In NumericUpDown, modifying the SpinnerLocation dynamically will no longer throw an exception.
In TextBox, the text is now correctly aligned when the HorizontalContentOptions or VerticalContentOptions are set to Fill.
In ToggleSwitch, modifying the IsCheckedLeft property dynamically will no longer throw an exception.
In UpDown controls, the DisplayDefaultValueOnEmptyText property has been removed becaused it was unused.
All the Toolkit’s controls are now compatible with .NET9.
In InputBase, a new property, called CaretBrush, allows to set the color of the caret brush used by the DateTimePicker, DateTimeUpDown, NumericUpDown, TimeSpanUpDown & TimePicker.
In CheckComboBox, a new property, called Watermark, allows to set a Watermark in the CheckComboBox.
In CheckComboBox, a new property, called WatermarkTemplate, allows to set a template for the CheckComboBox’s Watermark.
In MaskedTextBox, a new property, called RawText, now gives access to the TextBox’s raw content.
In MaskedTextBox, a new property, called Watermark, allows to set a Watermark in the MaskedTextBox.
In MaskedTextBox, a new property, called WatermarkTemplate, allows to set a template for the MaskedTextBox’s Watermark.
In AvalonDock, a LayoutAnchorable will now move back to its previous position when undocked and then docked via the options in the context menu.
In AvalonDock, floating a window no longer displays it behind the main app’s window.
In AvalonDock, pressing the Shift + F10 keys will no longer raise a “not a Visual or Visual3D” exception.
AvalonDock no longer throws an InvalidOperationException when deserializing XML containing self-closed tags.
In Chart, an ArgumentException will no longer be thrown when the Chart’s axis points are set to zero.
In CheckComboBox, clicking the SelectAll option no longer throws a NullRedException when the ItemsSource is a collection of enum values.
In CheckComboBox, modifying the SystemParameters.VerticalScrollBarWidthKey no longer affects the DropDownButton size.
In ColorPicker, setting the AvailableColorsSortingMode to HueSaturationBrightness no longer creates binding errors when the ColorPicker is in a Popup.
In DockingManager, a new event, called LayoutFloatingWindowControlCollectionChanged, allows to get notifications when the collection of LayoutFloatingWindowControl changes.
The ExtentedTabControl no longer throws an ArgumentOutOfRangeException when TabItems are removed.
In PropertyGrid, the CategoryOrder will now be respected when using the LocalizedCategory attribute.
In PropertyGrid, properties of type List<decimal> or IList<decimal> will now use the PrimitiveTypeCollectionEditor instead of the CollectionEditor.
In PropertyGrid, the NotSupportedException is no longer thrown when the SelectedContent is a Dictionary of (int, object).
In WatermarkPassworkBox, the softKeyboard now appears as it should when the control is touched in touch screen apps.
Xceed Workbooks for .NET now supports non-Windows environments in a NET5+ context. Note that a new dll, named Xceed.DrawingUtils.NET.dll, is required to make this work & should replace System.Drawing or System.Drawing.Common when using Color, Point, RectangleF, Font & similar types.
A new class, called DataValidation, can now be used to integrate Excel’s validation feature into Xceed Workbooks for .NET.
A new class, called PageLayout, now allows to define the options related to the Worksheet’s page & printing layouts.
In PageLayout, a new property, called Margins, now allows to add margins to a Worksheet.
In PageLayout, multiple methods have been added to allow the insertion & removal of page breaks in the Worksheet.
In PageLayout, two new properties, respectively called RowBreaks & ColumnBreaks, can now be used to keep track of where page breaks are inserted in the Worksheet.
In Worksheet, a new property, called PageLayout, now allows to get how the Worksheet is laid out.
In Alignment, a new property, called IndentLevel, now allows to define the indentation for the content of a Cell.
In Alignment, a new property, called IsShrinkToFit, now allows to shrink a text so that it fits within a Cell.
In Cell, a new method, called CalculateFormula, now allows to calculate the Cell’s formula & then update the Cell’s Value property with the results of the calculation.
In Cell, a new method, called CopyAndPasteTo, now allows to either copy or cut data & then paste it elsewhere in the Workbook.
In CellRange, two new methods, called CopyAndPasteTo & CutAndPasteTo, now allow to respectively copy or cut data from a CellRange & paste it elsewhere in the Workbook.
A new enumeration, called CopyOptions, allows to determine if the data found in a specific Cell or CellRange will be copied or cut before being pasted into a new location.
A new enumeration, called PasteOptions, allows to determine what kind of data is pasted into a new location.
In Workbook, Column, Row, Worksheet and Ranges, a new method, called ReplaceContents, can now be used to replace multiple search values with new values, without the need to repeat the process for every value that needs to be replaced.
In Cell, formulas read from a loaded workbook now include the “=” sign so that said formulas can be calculated.
In Cell, the maximum number of shared strings allowed is no longer 65536, but 4,294,967,295, which means that shared strings will no longer be repeated in Cells.
In Column, the Column’s Width property will now be set automatically to 255 instead of throwing an exception when a Document containing a Column larger than 255 is loaded.
In Workbooks, using multi-threading to set multiple Cells’ properties no longer throws exceptions.
In Worksheet, Chart Worksheets are now loaded correctly.
Timestamps to trace log entries were added; they are enabled by default.
SSHClient.TraceWriterTimestampFormat, SSHClient.TraceWriterTimestampFormatProvider & SSHClient.TraceWriterTimestampUTC properties were added for extra customization.
Support was added for Encrypt-then-MAC algorithms, as well as hmac-sha2-256-etm@openssh.com, hmac-sha2-512-etm@openssh.com & hmac-sha1-etm@openssh.com algorithms; this increases interoperability and security.
HighSecurityDataIntegrityMethods & HighSecurityEncryptionMethods algorithm sets were added; these optional lists allow to connect using only highly secure modern algorithms at the expense of interoperability.
Support for RFC8308: Extension Negotiation was added in the Secure Shell (SSH) Protocol; this improves interoperability & allows for more features in the future.
The negotiation priorities of high security key exchange & public key algorithms were improved; this improves security and interoperability.
DefaultKeyExchangeMethods and DefaultPublicKeyAlgorithms were reordered to make their characteristics match; this avoids a scenario where diffie-hellman-group1-sha1 and ecdsa-sha2-nistp256 are chosen together, confusing some servers like WingFTPServer. It also improves interoperability.
Fixed a bug where ‘hmac-sha2-512’ data integrity algorithm didn’t work correctly.
Fixed a bug where a deadlock would occur in SSHClient.Connect() when the object was used to connect for a second time.
Fixed a bug where a deadlock would occur when the remote server would disconnect in an ungraceful way (i.e. forceful close of connection without a disconnect message).