Xceed Words for .NET 4.0 (build 4.0.250103.5744 )
- Xceed Words for .NET now supports .NET9
- 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.
Xceed Toolkit for .NET Maui 2.0 (build 2.0.20250203.111 )
- A new control, called ComboBox, is now available.
- 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.
Xceed Toolkit Plus for WPF 4.7 (build 4.7.25103.5738)
- 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 DataGrid for WPF 7.3 (build 7.3.25103.5756)
- Xceed’s DataGrid for WPF has a new WorkbooksExporter, which now makes it possible to export the grid in the Excel Workbook format (*.xlsx).
- Performance improvements have been made to the DataGridControl’s SelectedItems.
- The chance of triggering a deadlock in UI Automation are now reduced.
- Items are no longer skipped during the exporting process.
- Fixed a performance degradation caused by out of view StatCell being prepared.
- Fixed an event handler that was not properly unregistered in DataGridCollectionViewBase.
- Fixed a NullReferenceException that may occur when selecting a Cell not bound to a Column in CardflowView3D.
- Fixed a reentrancy issue occurring when removing the currently edited item from the source collection.
- The DataCell’s background color is now set properly when it is selected in the TreeGridflowView while the SelectionUnit is set to Cell.
- In TreeGridflowView, the DataCells are now properly selected when SelectionUnit is set to Cell.
- The UI Automation’s Row count is now properly updated once a data source is assigned to the DataGrid.
- A DataGridInternalException is no longer thrown when an item is moved within a Group.
- Removing the current item when the grid’s SynchronizeSelectionWithCurrent property is set to true no longer throws an InvalidOperationException.
- Copying from the DataGridControl using the Ctrl-C shortcut no longer throws a COMException.
- In Cell, the ParentCell attached property no longer triggers an exception in the XAML Editor.
Xceed Workbooks for NET 2.0 (build 4.0.250103.5744)
- Xceed Workbooks for .NET now supports .NET9.
- 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.
Xceed SFTP for .NET 7.2 (build 7.2.25103.5775)
- 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).
Xceed FTP for .NET 7.2 (build 7.2.25103.5775)
- Three new properties, named TraceWriterTimestampFormat, TraceWriterTimestampFormatProvider & TraceWriterTimestampUTC, are now available.
- Optional timestamps to trace log entries are now available.
Xceed ZIP for .NET 7.2 (build 7.2.25103.5775)
- Fixed a bug where files using a future date (like December 31st, 2107 for example) triggered an exception during the zipping process.
Xceed Realtime ZIP for .NET 7.2 (build 7.2.25103.5775)
- Fixed a bug where files using a future date (like December 31st, 2107 for example) triggered an exception during the zipping process.
Fluent Assertions 8.0 (build 8.0.1)
- Fluent Assertions is now part of Xceed’s line of products & its license was updated accordingly.
- Fluent Assertions now supports NUnit4 & the TUnit Framework.
- .NET Core & NSpec 3 are no longer supported.
- Two new assertions, called BeNaN & NotBeNaN, were added to this version of Fluent Assertions.
- ForConstraint was added to IAssertionScope.
- Multiple assertions were added to XElement and XDocument.
- Scoped value formatters have been added to Fluent Assertions.
- The NotBeIn(DateTimeKind) DateTime assertion can now be used.
- An option to ignore newline style when comparing strings for equivalency has been added.
- An attribute which allows to mark an entire assembly as one that contains custom assertions has been added.
- An attribute which allows global initialization of the assertion options has also been added.
- The [NotNull] attribute was added in the Should() method for object assertions.
- [StringSyntax(“CompositeFormat”)] was added to all because parameters.
- AsyncFunctionAssertions is now a real base class.
- TypeMemberReflector has been optimized.
- The obsolete OrEqualTo methods were removed.
- The non-compliant StringSyntaxAttribute was removed.
- SpacesPerIndentionLevel was removed.
- The binary formatter was also removed.
- The HttpResponseMessage assertions are no longer supported.
- EquivalencyAssertionOptions was renamed to EquivalencyOptions.
- All support for DataSet, DataTable & DataRow has been moved into FluentAssertions.DataSets.
- The non-generic NotThrow[After] was moved to ActionAssertions.
- It is now possible to fluently call WithoutMatchingRules and WithoutSelectionRules while using BeEquivalentTo.
- AssertionScope and how it travels over chained calls has been redesigned.
- Configuration, Services and AssertionOptions have been redesigned.
- The inheritance of SubsequentOrderingAssertions was simplified.
- Naming improvements were done in order to clarify a few things.
- The BeUpperCased & BeLowerCased semantics were improved.
- ExcludingNestedObjects was renamed to WithoutRecursing to better describe its purpose.
- RespectingRuntimeTypes and RespectingDeclaredTypes were renamed to better clarify their purpose.
- The list of events returned by RaisePropertyChangeFor are now filtered.
- Explicitly implemented members are now properly discoverable in BeEquivalentTo.
- Private protected members are now excluded from BeEquivalentTo.
- Boolean literals are now passed as becauseArguments.
- Event monitoring is now allowed to ignore failing event accessors.
- Specifying EquivalencyOptions in string assertions is now allowed.
- Nested AssertionScopes are now allowed to chain their context.
- Support for Satisfy was added on ReferenceTypeAssertions.
- BeEmpty() now materializes IEnumerable only once, even on failure.
- Allocations are now avoided when chaining contexts.
- AllSatisfy & OnlyContain will now succeed on empty collections.
- The nullability of Subject for NumericAssertions is now correctly specified.
- The path will now be properly reported even if custom mapping is used.
- ThrowWithinAsync will now respect canceled tasks.
- “\\r\\n” is no longer treated as a new line.
- null handling now behaves correctly when using a custom comparer.
- There is no longer an issue when an empty ArraySegment is a member of a class.
- Methods are now guarded against the [Not]HaveExplicit(Property|Method) assertion scope.
- Asserting is no longer continued on the concrete exception type when the exception is null.
- Comparing an IDictionary subject with an IDictionary<,> expectation is now handled properly.
- A formatting error occuring when checking nullable DateTimeOffset with BeWithin/Before has been fixed.
- Improvements were made to the failure message for string assertions when checking for equality.
- True and false are now capitalized in failure messages.
- The documentation’s landing page has been updated.
- The documentation now contains more DataTime tips.
- A note was added to the XML documentation in order to explain the (Not)ContainEquivalentOf problem.
- Various typos & errors were fixed in the documentation.