From 5dff95d2fdcb9157eb26af98fc792617c7fe25df Mon Sep 17 00:00:00 2001 From: StenlyGrigorov Date: Wed, 29 Oct 2025 16:15:13 +0200 Subject: [PATCH 1/3] Document the information regarding the Document property of RadPdfViewer which needs to be set to null. Also, refactor the article --- controls/radpdfviewer/showing-a-file.md | 143 ++++++------------------ 1 file changed, 37 insertions(+), 106 deletions(-) diff --git a/controls/radpdfviewer/showing-a-file.md b/controls/radpdfviewer/showing-a-file.md index 685b0664f..4d536d5cc 100644 --- a/controls/radpdfviewer/showing-a-file.md +++ b/controls/radpdfviewer/showing-a-file.md @@ -1,7 +1,7 @@ --- title: Showing a File page_title: Showing a File -description: Check our "Showing a File" documentation article for the RadPdfViewer {{ site.framework_name }} control. +description: Check our "Showing a File" documentation article for the RadPdfViewer WPF control. slug: radpdfviewer-showing-a-file tags: showing,a,file published: True @@ -10,33 +10,28 @@ position: 4 # Showing a File - - -This help article discusses different ways of loading a document in __RadPdfViewer__ and their customization options. - +This help article discusses different ways of loading a document in `RadPdfViewer` and their customization options. ## Showing a PDF file -__RadPdfViewer__ exposes a __DocumentSource__ property of type {% if site.site_name == 'WPF' %}[FixedDocumentStreamSource](https://docs.telerik.com/devtools/wpf/api/telerik.windows.documents.fixed.fixeddocumentstreamsource){% endif %}{% if site.site_name == 'Silverlight' %}[FixedDocumentStreamSource](https://docs.telerik.com/devtools/silverlight/api/telerik.windows.documents.fixed.fixeddocumentstreamsource){% endif %} that can be used to pass a PDF file to the control. There are several ways to set the property. +RadPdfViewer exposes a `DocumentSource` property of type [FixedDocumentStreamSource](https://docs.telerik.com/devtools/wpf/api/telerik.windows.documents.fixed.fixeddocumentstreamsource) that can be used to pass a PDF file to the control. There are several ways to set the property. ### Setting the DocumentSource in XAML -First, you need to declare the Telerik namespace as shown in __Example 1__. +First, you need to declare the Telerik namespace as shown in the following example. -__Example 1: Define Telerik namespace__ +__Define Telerik namespace__ ```XAML xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation" ``` +After that, you can proceed to add the PdfViewer control to the user control as shown below. +>Make sure to set the __Build Action__ of the file to __Resource__ so it can be accessed through URI. -After that, you can proceed to add the **PdfViewer** control to the user control as shown in __Example 2__. - ->Make sure to set the Build Action of the file to Resource so it can be accessed through URI. - -__Example 2: Create RadPdfViewer__ +__Create RadPdfViewer__ ```XAML @@ -44,35 +39,17 @@ __Example 2: Create RadPdfViewer__ ``` +In __Example 2__, a file named "Sample.pdf" embedded in a "Sample Data" folder in the WPF project will be shown when the page is loaded. PdfViewerDemo is the name of the project. -In __Example 2__, a file named "Sample.pdf" embedded in a "Sample Data" folder in the {{ site.framework_name }} project will be shown when the page is loaded. PdfViewerDemo is the name of the project. - -{% if site.site_name == 'Silverlight' %} -You can also load files that are not on the client machine. For example, if you embed a Sample.pdf file in the Web project, you can load it like this: - - - -```XAML - -``` - - ->PDF files can be opened as long as you can obtain a stream with their content that supports *Read and Seek operations*. Note that due to Silverlight's security policy, only files from a domain with permissive cross-domain policy can be loaded. Furthermore, if the stream supports only Read, its content should be copied to a MemoryStream, which will enable the Seek operation as well and will facilitate **RadPdfViewer** to show the document. Notice that the document is loaded **asynchronously** and the stream **shouldn't be closed**. -{% endif %} - - -{% if site.site_name == 'WPF' %} ->PDF files can be opened as long as you can obtain a stream with their content that supports *Read and Seek operations*. If the stream supports only Read, its content should be copied to a MemoryStream, which will enable the Seek operation as well and will facilitate **RadPdfViewer** to show the document. Notice that the document is loaded **asynchronously** and the stream **shouldn't be closed**. -{% endif %} - +>PDF files can be opened as long as you can obtain a stream with their content that supports *Read and Seek operations*. If the stream supports only Read, its content should be copied to a MemoryStream, which will enable the Seek operation as well and will facilitate RadPdfViewer to show the document. Notice that the document is loaded __asynchronously__ and the stream __shouldn't be closed__. ### Setting DocumentSource in Code-Behind In code-behind, you can set the DocumentSource to either a URI or a stream. -__Example 3__ shows how a PDF file can be loaded from a file embedded as a resource through a _stream_: +The following example shows how a PDF file can be loaded from a file embedded as a resource through a _stream_: -__Example 3: Load PDF from a stream__ +__Load PDF from a stream__ ```C# @@ -83,11 +60,9 @@ __Example 3: Load PDF from a stream__ } ``` +The next shows how a PDF can be loaded from a file embedded as a resource by passing its URI: - -__Example 4__ shows how a PDF can be loaded from a file embedded as a resource by passing its URI: - -__Example 4: Load PDF from a URI__ +__Load PDF from a URI__ ```C# @@ -97,19 +72,15 @@ __Example 4: Load PDF from a URI__ } ``` +In the above two examples, PdfViewerDemo is the name of the project and the PDF file is embedded as a resource in a folder called SampleData. - -In __Example 3__ and __Example 4__, PdfViewerDemo is the name of the project and the PDF file is embedded as a resource in a folder called SampleData. - - ->note The **PdfDocumentSource** class exposes the **Loaded** event. This event is not related to the parsing of the content but is fired just after the document is being imported. - +>note The `PdfDocumentSource` class exposes the `Loaded` event. This event is not related to the parsing of the content but is fired just after the document is being imported. ### Setting the Document in Code-Behind -__PdfDocumentSource__ internally uses the __PdfFormatProvider__ class to create a document for __RadPdfViewer__. This allows you to easily import your documents directly using __PdfFormatProvider__ instead of __PdfDocumentSource__. +PdfDocumentSource internally uses the `PdfFormatProvider` class to create a document for RadPdfViewer. This allows you to easily import your documents directly using PdfFormatProvider instead of PdfDocumentSource. -__Example 5: Set RadFixedDocument through PdfFormatProvider__ +__Set RadFixedDocument through PdfFormatProvider__ ```C# @@ -126,24 +97,22 @@ __Example 5: Set RadFixedDocument through PdfFormatProvider__ RadFixedDocument doc = provider.Import(stream, null); this.pdfViewer.Document = doc; ``` - + +>It is important to set the `Document` property to __null__ prior to removing it from the visual tree as it is necessary for the RadPdfViewer control instance to be garbage collected. ## Binding the DocumentSource of RadPdfViewer -The __DocumentSource__ of __RadPdfViewer__ is implemented as a dependency property and can be bound to a __URI__, __string__ representing a URI, or a __stream__. This is done with the help of __PdfDocumentSourceValueConverter__, which caters to creating a PdfDocumentSource and presenting it to the viewer. +The DocumentSource of RadPdfViewer is implemented as a dependency property and can be bound to a `URI`, __string__ representing a URI, or a __stream__. This is done with the help of `PdfDocumentSourceValueConverter`, which caters to creating a PdfDocumentSource and presenting it to the viewer. +The next two examples show how to declare the converter: -__Example 6__ and __Example 7__ show how to declare the converter: - -__Example 6: Define a Fixed namespace__ +__Define a Fixed namespace__ ```XAML xmlns:fixed="clr-namespace:Telerik.Windows.Documents.Fixed;assembly=Telerik.Windows.Controls.FixedDocumentViewers" ``` - - -__Example 7: Define a PdfDocumentSourceValueConverter__ +__Define a PdfDocumentSourceValueConverter__ ```XAML @@ -151,12 +120,9 @@ __Example 7: Define a PdfDocumentSourceValueConverter__ ``` +The bound property can be implemented as shown in the below two examples: - -The bound property can be implemented as shown in __Example 8__ and __Example 9__.: - - -__Example 8: Create the property__ +__Create the property__ ```C# public class Context @@ -164,10 +130,9 @@ __Example 8: Create the property__ public [string/Uri/Stream] Source { get; set; } } ``` +Notice that regardless of the type of the property you choose to bind the DocumentSource of the PdfViewer to, the XAML is identical. -Notice that regardless of the type of the property you choose to bind the DocumentSource of the **PdfViewer** to, the XAML is identical. - -__Example 9: Bind the DocumentSource property of RadPdfViewer__ +__Bind the DocumentSource property of RadPdfViewer__ ```XAML @@ -178,60 +143,30 @@ __Example 9: Bind the DocumentSource property of RadPdfViewer__ You can control the way the documents are loaded in RadPdfViewer. You can choose between loading the whole document at one time or loading it page by page. The second option means that you no longer needed to parse the entire document in order to show it. However, you will need to keep the stream to the document file open. -You can control how the document is loaded by setting the {% if site.site_name == 'WPF' %} **PdfViewer.DefaultImportSettings** {% else %} **PdfViewer.DefaultFormatProviderSettings** {% endif %} property. {% if site.site_name == 'WPF' %}This property is used when the OpenPdfDocumentCommand is triggered to open a PDF file and could be set to one of the settings exposed by the [PdfImportSettings class](https://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfformatprovider/settings). {% endif %} -{% if site.site_name == 'Silverlight' %} - -* __ReadAllAtOnce__: This value is used by default. When ReadAllAtOnce is applied, the document stream will be copied into a memory stream, which is used by PdfViewer. When you are loading a document through an URI in combination with ReadAllAtOnce, the stream to the resource will be closed as soon as it is copied to memory. - -* __ReadOnDemand__: Each page of the document is loaded dynamically when necessary (to be shown in the PdfViewer, printed, etc.) and it is unloaded once it becomes invisible. The stream that holds the document stays opened while the document is used in PdfViewer. - +You can control how the document is loaded by setting the `PdfViewer.DefaultImportSettings` property. This property is used when the `OpenPdfDocumentCommand` is triggered to open a PDF file and could be set to one of the settings exposed by the [PdfImportSettings class](https://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/formats-and-conversion/pdf/pdfformatprovider/settings). -__Example 10: Setting DefaultFormatProviderSettings__ - -```C# - this.pdfViewer.DefaultFormatProviderSettings = FormatProviderSettings.ReadOnDemand; -``` - -{% else %} - -__Example 10: Setting DefaultImportSettings__ +__Setting DefaultImportSettings__ ```C# this.pdfViewer.DefaultImportSettings = PdfImportSettings.ReadOnDemand; ``` -{% endif %} - -Another option to set the reading mode is through the constructors that accept {% if site.site_name == 'WPF' %} **PdfImportSettings** {% else %}__FormatProviderSettings__{% endif %} when creating a new instance of the **PdfDocumentSource** class. +Another option to set the reading mode is through the constructors that accept `PdfImportSettings` when creating a new instance of the PdfDocumentSource class. -{% if site.site_name == 'Silverlight' %}The __ReadOnDemand__ predefined settings are used by default.{% else %}The default settings used by PdfViewer are `ReadingMode: OnDemand` and `CopyStream: true` to allow you parse only the needed content while you are not obligated to keep the stream to the document open.{% endif %} +The default settings used by PdfViewer are `ReadingMode: OnDemand` and `CopyStream: true` to allow you parse only the needed content while you are not obligated to keep the stream to the document open. -If you want to change this behavior to read all the document pages at the beginning of the import, you can create a new __PdfDocumentSource__ instance with __FormatProviderSettings.ReadAllAtOnce__ predefined settings. +If you want to change this behavior to read all the document pages at the beginning of the import, you can create a new PdfDocumentSource instance with `FormatProviderSettings.ReadAllAtOnce` predefined settings. -{% if site.site_name == 'WPF' %} -__Example 11: Setting PdfImportSettings__ +__Setting PdfImportSettings__ ```C# PdfDocumentSource source = new PdfDocumentSource(stream/uri, PdfImportSettings.ReadOnDemand); ``` -{% else %} - -__Example 11: Setting FormatProviderSettings__ - -```C# - - PdfDocumentSource source = new PdfDocumentSource(stream/uri, FormatProviderSettings.ReadOnDemand); -``` - -{% endif %} - - -When you bind the __DocumentSource__ property of __RadPdfViewer__ and want to control the way bound documents are loaded, you can pass the desired settings as a ConverterParameter. - +When you bind the DocumentSource property of RadPdfViewer and want to control the way bound documents are loaded, you can pass the desired settings as a ConverterParameter. -__Example 12: Applying settings in binding scenario__ +__Applying settings in binding scenario__ ```XAML @@ -239,11 +174,9 @@ __Example 12: Applying settings in binding scenario__ `ReadAllAtOnce` and `ReadOnDemand` are the valid values you can specify. -{% if site.site_name == 'WPF' %} ## Handling Errors Sometimes, the loading of the document might not success due to different reasons and an exception might be thrown. You can handle the errors in a way suitable for your application using the [Exception Handling](https://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/features/handling-document-exceptions) mechanism of the model of PdfViewer - **PdfProcessing**. -{% endif %} ## See Also @@ -251,6 +184,4 @@ Sometimes, the loading of the document might not success due to different reason * [Viewer Modes]({%slug radpdfviewer-viewer-modes%}) -{% if site.site_name == 'WPF' %} -* [Exception Handling](https://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/features/handling-document-exceptions) -{% endif %} +* [Exception Handling](https://docs.telerik.com/devtools/document-processing/libraries/radpdfprocessing/features/handling-document-exceptions) \ No newline at end of file From de7aa3746ee1d0f520889238fb6cc0b036530aba Mon Sep 17 00:00:00 2001 From: StenlyGrigorov Date: Wed, 29 Oct 2025 18:04:51 +0200 Subject: [PATCH 2/3] Document the changes to the EF, DataServices and AdoMD 2025 Q4 --- .../getting-started/getting-started.md | 25 ++---- .../entityframework-getting-started.md | 48 ++++------- .../populating-with-data/data-adomd.md | 84 ++++++++----------- 3 files changed, 60 insertions(+), 97 deletions(-) diff --git a/controls/raddataservicedatasource/getting-started/getting-started.md b/controls/raddataservicedatasource/getting-started/getting-started.md index 33435197b..7f782268f 100644 --- a/controls/raddataservicedatasource/getting-started/getting-started.md +++ b/controls/raddataservicedatasource/getting-started/getting-started.md @@ -1,20 +1,20 @@ --- title: Getting Started page_title: Getting Started -description: Check our "Getting Started" documentation article for the RadDataServiceDataSource {{ site.framework_name }} control. +description: Check our "Getting Started" documentation article for the RadDataServiceDataSource WPF control. slug: raddataservicedatasource-getting-started tags: getting,started published: True position: 0 --- -# Getting Started with {{ site.framework_name }} DataServiceDataSource +# Getting Started with WPF DataServiceDataSource -This tutorial will walk you through the creation of a sample application that contains __RadDataServiceDataSource__ control. +This tutorial will walk you through the creation of a sample application that contains `RadDataServiceDataSource` control. ## Adding Telerik Assemblies Using NuGet -To use __RadDataServiceDataSource__ when working with NuGet packages, install the `Telerik.Windows.Controls.DataServices.for.Wpf.Xaml` package. The [package name may vary]({%slug nuget-available-packages%}) slightly based on the Telerik dlls set - [Xaml or NoXaml]({%slug xaml-vs-noxaml%}) +To use RadDataServiceDataSource when working with NuGet packages, install the `Telerik.Windows.Controls.DataServices.for.Wpf.Xaml` package. The [package name may vary]({%slug nuget-available-packages%}) slightly based on the Telerik dlls set - [Xaml or NoXaml]({%slug xaml-vs-noxaml%}) Read more about NuGet installation in the [Installing UI for WPF from NuGet Package]({%slug nuget-installation%}) article. @@ -28,19 +28,15 @@ If you are not using NuGet packages, you can add a reference to the following as * __Telerik.Windows.Controls__ * __Telerik.Windows.Controls.DataServices__ -If you are using OData version 3 you need to add reference to __Telerik.Windows.Controls.DataServices50__ which is built against __Microsoft.Data.Services.Client__ with version __5.6.4__. +>With the release of the 2025 Q4, the __Telerik.Windows.Controls.DataServices50__ and __Telerik.Windows.Controls.DataServices60__ assemblies have been removed. Instead, use the __Telerik.Windows.Controls.DataServices__ assembly, which is built against the __Microsoft.OData.Client__ NuGet package with version __7.8.3__. -For OData version 4 support, you need to add reference to __Telerik.Windows.Controls.DataServices60__ which is built against __Microsoft.OData.Client__ with __version 6.15.0__. - -Since the __R2 2021__ release, you can find a __Telerik.Windows.Controls.DataServices__ dll in the __WPF60__ and __WPF70__ folders built against __Microsoft.OData.Client__ with __version 7.8.3__. - -You can find the required assemblies for each control from the suite in the {% if site.site_name == 'Silverlight' %}[Controls Dependencies]({%slug installation-installing-controls-dependencies%}){% else %}[Controls Dependencies]({%slug installation-installing-controls-dependencies-wpf%}){% endif %} help article. +You can find the required assemblies for each control from the suite in the[Controls Dependencies]({%slug installation-installing-controls-dependencies-wpf%}) help article. ## Adding RadDataServiceDataSource -We will use __RadGridView__ control in order to visualize the data. +We will use `RadGridView` control in order to visualize the data. -__Example 1: Using RadDataServiceDataSource with RadGridView__ +__Using RadDataServiceDataSource with RadGridView__ ```XAML @@ -57,7 +53,6 @@ __Example 1: Using RadDataServiceDataSource with RadGridView__ - [Overview]({%slug raddataservicedatasource-overview%}) - [CRUD]({%slug raddataservicedatasource-crud%}) -{% if site.site_name == 'WPF' %} ## Telerik UI for WPF Learning Resources * [Telerik UI for WPF DataServiceDataSource Component](https://www.telerik.com/products/wpf/dataservicedatasource.aspx) @@ -67,6 +62,4 @@ __Example 1: Using RadDataServiceDataSource with RadGridView__ * [Telerik UI for WPF Visual Studio Templates]({%slug visual-studio-templates%}) * [Setting a Theme with Telerik UI for WPF]({%slug styling-apperance-implicit-styles-overview%}) * [Telerik UI for WPF Virtual Classroom (Training Courses for Registered Users)](https://learn.telerik.com/learn/course/external/view/elearning/16/telerik-ui-for-wpf) -* [Telerik UI for WPF License Agreement](https://www.telerik.com/purchase/license-agreement/wpf-dlw-s) -{% endif %} - +* [Telerik UI for WPF License Agreement](https://www.telerik.com/purchase/license-agreement/wpf-dlw-s) \ No newline at end of file diff --git a/controls/radentityframeworkdatasource/entityframework-getting-started.md b/controls/radentityframeworkdatasource/entityframework-getting-started.md index 8b5811f09..9b0258002 100644 --- a/controls/radentityframeworkdatasource/entityframework-getting-started.md +++ b/controls/radentityframeworkdatasource/entityframework-getting-started.md @@ -1,26 +1,26 @@ --- title: Getting Started page_title: Getting Started -description: Check our "Getting Started" documentation article for the RadEntityFrameworkDataSource {{ site.framework_name }} control. +description: Check our "Getting Started" documentation article for the RadEntityFrameworkDataSource WPF control. slug: entityframework-getting-started tags: getting,started published: True position: 3 --- -# Getting Started with {{ site.framework_name }} EntityFrameworkDataSource +# Getting Started with WPF EntityFrameworkDataSource -This tutorial will walk you through the creation of a sample application that contains __RadGridView__ bound to __RadEntityFrameworkDataSource__. +This tutorial will walk you through the creation of a sample application that contains `RadGridView` bound to `RadEntityFrameworkDataSource`. * [Creating the WPF Application](#creating-the-wpf-application) * [Creating the Model](#creating-the-model) * [Adding RadGridView and RadEntityFrameworkDataSource](#adding-radgridview-and-radentityframeworkdatasource) -As of version __2013 Q3 SP1__ we have added support for __EntityFramework 6.0__. You will need to reference the __Telerik.Windows.Controls.EntityFramework60__ assembly, rather than the __Telerik.Windows.Controls.EntityFramework__ one in order for this to work. +>With the release of the __2025 Q4__, the __Telerik.Windows.Controls.EntityFramework__ assembly has been removed. Instead, you will need to reference the __Telerik.Windows.Controls.EntityFramework60__ assembly, which is built against the __EntityFramework__ NuGet package with version __6.5.1__. ## Adding Telerik Assemblies Using NuGet -To use __RadEntityFrameworkDataSource__ when working with NuGet packages, install the `Telerik.Windows.Controls.EntityFramework.for.Wpf.Xaml` package. The [package name may vary]({%slug nuget-available-packages%}) slightly based on the Telerik dlls set - [Xaml or NoXaml]({%slug xaml-vs-noxaml%}) +To use RadEntityFrameworkDataSource when working with NuGet packages, install the `Telerik.Windows.Controls.EntityFramework.for.Wpf.Xaml` package. The [package name may vary]({%slug nuget-available-packages%}) slightly based on the Telerik dlls set - [Xaml or NoXaml]({%slug xaml-vs-noxaml%}) Read more about NuGet installation in the [Installing UI for WPF from NuGet Package]({%slug nuget-installation%}) article. @@ -28,7 +28,7 @@ Read more about NuGet installation in the [Installing UI for WPF from NuGet Pack ## Creating the WPF Application -1. Note that __RadEntityFrameworkDataSource__ is built on top of the [ADO.NET Entity Framework](https://docs.microsoft.com/en-us/ef/ef6/). Basic Entity Framework experience is required for working with __RadEntityFrameworkDataSource__. +1. Note that RadEntityFrameworkDataSource is built on top of the [ADO.NET Entity Framework](https://docs.microsoft.com/en-us/ef/ef6/). Basic Entity Framework experience is required for working with RadEntityFrameworkDataSource. 2. Start Visual Studio and create a new WPF Application. @@ -36,7 +36,7 @@ Read more about NuGet installation in the [Installing UI for WPF from NuGet Pack Now that we have the application, we will add our entity model using the AdventureWorks database. -1. In the project add a new __ADO.NET Entity Data Model__. You need to make sure that **Data** is selected from the left menu. +1. In the project add a new __ADO.NET Entity Data Model__. You need to make sure that __Data__ is selected from the left menu. ![Rad Entity Framework Getting Started 1](images/RadEntityFramework_Getting_Started1.png) 2. Choose to create a model using the code first approach from an existing database. @@ -44,7 +44,7 @@ Now that we have the application, we will add our entity model using the Adventu 3. Choose the data connection (for example the __AdventureWorks__ database). In order to learn how to add the AdventureWorks database, check out the [AdventureWorks Readme](https://github.com/Microsoft/sql-server-samples/tree/master/samples/databases/adventure-works) article. -4. Generate the entities from all of the tables in the __AdventureWorks__ database. +4. Generate the entities from all of the tables in the AdventureWorks database. 5. Click __Finish__ and __rebuild the solution__. @@ -52,26 +52,18 @@ Now that we have the application, we will add our entity model using the Adventu Now let's go to the client side. -**1.** Add References to the following __Telerik__ assemblies: +**1.** Add References to the following Telerik assemblies: * __Telerik.Licensing.Runtime__ -* __Telerik.Windows.Controls__ (mandatory for both __RadGridView__ and __RadEntityFrameworkDataSource__) +* __Telerik.Windows.Controls__ (mandatory for both RadGridView and RadEntityFrameworkDataSource) +* __Telerik.Windows.Controls.EntityFramework60__ (mandatory for RadEntityFrameworkDataSource with EF __6.0__ or later) +* __Telerik.Windows.Controls.GridView__ (mandatory for RadGridView) +* __Telerik.Windows.Controls.Input__ (mandatory for RadGridView) +* __Telerik.Windows.Data__ (mandatory for both RadGridView and RadEntityFrameworkDataSource) -* __Telerik.Windows.Controls.EntityFramework__ (mandatory for __RadEntityFrameworkDataSource__ with EF **5.0** or previous) +**2.** Now add the RadGridView and RadEntityFrameworkDataSource controls to the main window. The following example demonstrates how you can do that. - or - -* __Telerik.Windows.Controls.EntityFramework60__ (mandatory for __RadEntityFrameworkDataSource__ with EF **6.0** or later) - -* __Telerik.Windows.Controls.GridView__ (mandatory for __RadGridView__) - -* __Telerik.Windows.Controls.Input__ (mandatory for __RadGridView__) - -* __Telerik.Windows.Data__ (mandatory for both __RadGridView__ and __RadEntityFrameworkDataSource__) - -**2.** Now add the __RadGridView__ and __RadEntityFrameworkDataSource__ controls to the main window. **Example 1** demonstrates how you can do that. - -__Example 1: Adding RadGridView and RadEntityFrameworkDataSource__ +__Adding RadGridView and RadEntityFrameworkDataSource__ ```XAML ``` ->importantSince __Q3 SP1 2012__ we have added the __RadEntityFrameworkDataSource.DbContext__ property which should be set instead of the **ObjectContext** property for versions of Entity Framework newer than version **5.0**. If you are using an older version of Entity Framework, you can set the **RadEntityFrameworkDataSource.ObjectContext** property. - Several important things to notice: * The import of the telerik schema: __xmlns:telerik="[http://schemas.telerik.com/2008/xaml/presentation](http://schemas.telerik.com/2008/xaml/presentation)__ @@ -108,9 +98,9 @@ Several important things to notice: ## RelatedObjects -The __RelatedObjects__ property of the RadEntityFrameworkDataSource allows you to specify the names of the related entities that need to be retrieved. For example, if your main entity set is called "Customers", you might want to retrieve the "Orders" collection in case you want to get the related Orders for each Customer from the database. +The `RelatedObjects` property of the RadEntityFrameworkDataSource allows you to specify the names of the related entities that need to be retrieved. For example, if your main entity set is called "Customers", you might want to retrieve the "Orders" collection in case you want to get the related Orders for each Customer from the database. -__Example 2: Using the RelatedObjects__ +__Using the RelatedObjects__ ```XAML @@ -122,7 +112,6 @@ __Example 2: Using the RelatedObjects__ ``` -{% if site.site_name == 'WPF' %} ## Telerik UI for WPF Learning Resources * [Telerik UI for WPF EntityFrameworkDataSource Component](https://www.telerik.com/products/wpf/entity-framework-data-source.aspx) @@ -133,7 +122,6 @@ __Example 2: Using the RelatedObjects__ * [Setting a Theme with Telerik UI for WPF]({%slug styling-apperance-implicit-styles-overview%}) * [Telerik UI for WPF Virtual Classroom (Training Courses for Registered Users)](https://learn.telerik.com/learn/course/external/view/elearning/16/telerik-ui-for-wpf) * [Telerik UI for WPF License Agreement](https://www.telerik.com/purchase/license-agreement/wpf-dlw-s) -{% endif %} ## See also diff --git a/controls/radpivotgrid/populating-with-data/data-adomd.md b/controls/radpivotgrid/populating-with-data/data-adomd.md index 354827c56..de8ae7d47 100644 --- a/controls/radpivotgrid/populating-with-data/data-adomd.md +++ b/controls/radpivotgrid/populating-with-data/data-adomd.md @@ -1,7 +1,7 @@ --- title: Using AdomdDataProvider page_title: Using AdomdDataProvider -description: Check our "Using AdomdDataProvider" documentation article for the RadPivotGrid {{ site.framework_name }} control. +description: Check our "Using AdomdDataProvider" documentation article for the RadPivotGrid WPF control. slug: radpivotgrid-data-adomd tags: using,adomddataprovider published: True @@ -11,7 +11,7 @@ site_name: WPF # Using AdomdDataProvider -In this article we will show how to use __AdomdDataProvider__ and use data from OLAP Cube for __RadPivotGrid__. +In this article we will show how to use `AdomdDataProvider` and use data from OLAP Cube for `RadPivotGrid`. ## ADOMD.NET @@ -21,20 +21,22 @@ __ADOMD.NET__ is a Microsoft .NET Framework data provider that is designed to co ## AdomdDataProvider -__RadPivotGrid__ can use __AdomdDataProvider__ to get data from OLAP Cube. +RadPivotGrid can use AdomdDataProvider to get data from OLAP Cube. + +>With the release of the 2025 Q4, the __Telerik.Pivot.DataProviders.Adomd__ assembly requires a reference to the __Microsoft.AnalysisServices.AdomdClient__ NuGet package. The Telerik.Pivot.DataProviders.Adomd assembly is built against the __19.84.1__ version of this NuGet package. >You have to add reference to the following Telerik assembly to be able to use AdomdDataProvider in your application: -> * Telerik.Pivot.DataProviders.Adomd +>* Telerik.Pivot.DataProviders.Adomd -__AdomdDataProvider__ has several important properties that have to be defined in order to connect to OLAP Cube: +AdomdDataProvider has several important properties that have to be defined in order to connect to OLAP Cube: -* __ConnectionSettings__ - this property is of type *AdomdConnectionSettings* and it exposes several properties that are mandatory when connecting to the OLAP Cube: +* `ConnectionSettings`—this property is of type *AdomdConnectionSettings* and it exposes several properties that are mandatory when connecting to the OLAP Cube: - * __Cube__ - string property defining the exact name of the Cube. + * `Cube`—string property defining the exact name of the Cube. - * __Database__ - string property defining the exact name of the Database. + * `Database`—string property defining the exact name of the Database. - * __ConnectionString__ - string property used to open a database. It is in OLE DB connection string format. + * `ConnectionString`—string property used to open a database. It is in OLE DB connection string format. >The OLE DB connection string format has several keys and values connected with equal sign. The different key-value pairs are separated by semicolon characters. Some of the important properties are *Provider*, *Data Source*, *Integrated Security*, etc. Here are some examples for different OLE DB connection strings: > * "Provider=MSOLAP;Data Source=myServerAddress;Initial Catalog=myDataBase;" @@ -48,19 +50,17 @@ __AdomdDataProvider__ has several important properties that have to be defined i > Cube="CubeName" > Database="DatabaseName" -* __AggregatesLevel__ - set the position where groups for the aggregates should be placed. +* `AggregatesLevel`—set the position where groups for the aggregates should be placed. -* __AggregatesPosition__ - defines whether the positon of the Aggregates will be Columns or Rows. +* `AggregatesPosition`—defines whether the positon of the Aggregates will be Columns or Rows. -__AdomdDataProvider__ uses four different collections to design the view of __RadPivotGrid__ report and __RadPivotFieldList__: *RowGroupDescriptions, ColumnGroupDescriptions, AggregateDescriptions, FilterDescriptions.*. +AdomdDataProvider uses four different collections to design the view of RadPivotGrid report and `RadPivotFieldList`: *RowGroupDescriptions, ColumnGroupDescriptions, AggregateDescriptions, FilterDescriptions.*. ## Defining AdomdDataProvider -You can define your __AdomdDataProvider__ as a *StaticResource* in the __XAML__ and then use it in both __RadPivotGrid__ and __RadPivotFieldList__ controls. - ->importantThe __pivot__ namespace is URI namespace: __xmlns:pivot="http://schemas.telerik.com/2008/xaml/presentation/pivot"__. It is mandatory to define it if you are using the __AdomdDataProvider__ in your XAML. - +You can define your AdomdDataProvider as a *StaticResource* in the XAML and then use it in both RadPivotGrid and RadPivotFieldList controls. +>importantThe __pivot__ namespace is URI namespace: __xmlns:pivot="http://schemas.telerik.com/2008/xaml/presentation/pivot"__. It is mandatory to define it if you are using the AdomdDataProvider in your XAML. ```XAML @@ -77,9 +77,7 @@ You can define your __AdomdDataProvider__ as a *StaticResource* in the __XAML__ ``` -You can also create an object of type __AdomdDataProvider__ in the code behind and set it for your controls: - - +You can also create an object of type AdomdDataProvider in the code behind and set it for your controls: ```C# AdomdDataProvider adomdDataProvider = new AdomdDataProvider(); @@ -96,9 +94,7 @@ You can also create an object of type __AdomdDataProvider__ in the code behind a ## Connection to OLAP Cube -To show data in __RadPivotGrid__ and __RadPivotFieldList__ we have to connect to OLAP Cube. For this purpose we will set the ConnectionSettings property of the __AdomdDataProvider__. This can be done directly in the __XAML__ or in the code behind: - - +To show data in RadPivotGrid and RadPivotFieldList we have to connect to OLAP Cube. For this purpose we will set the ConnectionSettings property of the AdomdDataProvider. This can be done directly in the XAML or in the code behind: ```XAML @@ -112,8 +108,6 @@ To show data in __RadPivotGrid__ and __RadPivotFieldList__ we have to connect to ``` - - ```C# AdomdConnectionSettings connectionSettings = new AdomdConnectionSettings(); connectionSettings.Cube = "Adventure Works"; @@ -135,30 +129,28 @@ To show data in __RadPivotGrid__ and __RadPivotFieldList__ we have to connect to ## Defining Group Descriptions ->caution When initializing the __AdomdDataProvider__ in the code behind it is a good idea to wrap all modifications in __BeginInit() - EndInit()__ section. This will cause only one refresh of the DataProvider and it will be when the EndInit() is reached. If you are applying only modifications (more than one) on already initialized __AdomdDataProvider__ you should use the DeferRefresh() method which will cause delay of the Refresh and this way all your changes will be applied simultaneously. More information for these methods is available in our [Populating with Data - Overview]({%slug radpivotgrid-populating-with-data%}) article. +>caution When initializing the AdomdDataProvider in the code behind it is a good idea to wrap all modifications in __BeginInit() - EndInit()__ section. This will cause only one refresh of the DataProvider and it will be when the EndInit() is reached. If you are applying only modifications (more than one) on already initialized AdomdDataProvider you should use the DeferRefresh() method which will cause delay of the Refresh and this way all your changes will be applied simultaneously. More information for these methods is available in our [Populating with Data - Overview]({%slug radpivotgrid-populating-with-data%}) article. -The __AdomdDataProvider__ is using four collections that are reflecting the visual representation of __RadPivotGrid__ and __RadPivotFieldList__: +The AdomdDataProvider is using four collections that are reflecting the visual representation of RadPivotGrid and RadPivotFieldList: -* __RowGroupDescriptions__ - the data added to this collection will show as Row Headers in __RadPivotGrid__. There is only one type of description that can be added to this collection - __AdomdGroupDescription__. +* `RowGroupDescriptions`—the data added to this collection will show as Row Headers in RadPivotGrid. There is only one type of description that can be added to this collection - `AdomdGroupDescription`. -* __ColumnGroupDescriptions__ - the data added to this collection will show as Column Headers in __RadPivotGrid__. There is only one type of description that can be added to this collection - __AdomdGroupDescription__. +* `ColumnGroupDescriptions`—the data added to this collection will show as Column Headers in RadPivotGrid. There is only one type of description that can be added to this collection - AdomdGroupDescription. -* __AggregateDescriptions__ - the data added to this description will be aggregated and included in __RadPivotGrid__ as Cells. There is only one type of description that can be added to this collection - __AdomdAggregateDescription__. +* `AggregateDescriptions`—the data added to this description will be aggregated and included in RadPivotGrid as Cells. There is only one type of description that can be added to this collection - `AdomdAggregateDescription`. -* __FilterDescriptions__ - the data added to this collection will be filtered based on a particular condition. __RadPivotGrid__ will show only items that pass the filter condition. There is only one type that can be added to this collection - __AdomdFilterDescription__. You can define a single filter condition or set up filtering for different levels of the selected member. +* `FilterDescriptions`—the data added to this collection will be filtered based on a particular condition. RadPivotGrid will show only items that pass the filter condition. There is only one type that can be added to this collection - AdomdFilterDescription. You can define a single filter condition or set up filtering for different levels of the selected member. -The __AdomdGroupDescription__ is used to define the data that will show as Rows and Columns in __RadPivotGrid__. When defining __AdomdGroupDescription__ you must set the *MemberName* property. The *MemberName* property is of type string and you should define it based on your Cube. +The AdomdGroupDescription is used to define the data that will show as Rows and Columns in RadPivotGrid. When defining AdomdGroupDescription you must set the *MemberName* property. The *MemberName* property is of type string and you should define it based on your Cube. -The __AdomdAggregateDescription__ is used to define data that has to be aggregated and that will show as Cells in __RadPivotGrid__. The data that should be aggregated is define with the *MemberName* property. +The AdomdAggregateDescription is used to define data that has to be aggregated and that will show as Cells in RadPivotGrid. The data that should be aggregated is define with the *MemberName* property. >The *MemberName* property must have the following syntax: -> * For __AdomdAggregateDescription__: __"[Measures].[MEASURE_NAME]"__. -> * For __AdomdGroupDescription__ there are two ways (based on the data that will be used): __"[DIMENSION].[HIERARCHY]"__ or __"[SET_NAME]"__.Note that the brackets are mandatory. +> * For AdomdAggregateDescription: __"[Measures].[MEASURE_NAME]"__. +> * For AdomdGroupDescription there are two ways (based on the data that will be used): __"[DIMENSION].[HIERARCHY]"__ or __"[SET_NAME]"__.Note that the brackets are mandatory. Here is how to define row, column group descriptions and aggregate descriptions: - - ```XAML @@ -173,8 +165,6 @@ Here is how to define row, column group descriptions and aggregate descriptions: ``` - - ```C# AdomdGroupDescription rowGroupDescription1 = new AdomdGroupDescription(); rowGroupDescription1.MemberName = "[Date].[Calendar Year]"; @@ -206,9 +196,7 @@ Here is how to define row, column group descriptions and aggregate descriptions: adomdDataProvider.EndInit() ``` -The __AdomdFilterDescription__ is used to filter the data that will be included in the report. Filtering is applied for a specific member defined in *MemberName* property. *Condition* property defines the way to filter the items. Only the ones that pass the filter will be shown in __RadPivotGrid__. The filtering is based on the Unique Name of the members. For example, if you want to show only data for year 2005, you can define it like this: - - +The AdomdFilterDescription is used to filter the data that will be included in the report. Filtering is applied for a specific member defined in *MemberName* property. *Condition* property defines the way to filter the items. Only the ones that pass the filter will be shown in RadPivotGrid. The filtering is based on the Unique Name of the members. For example, if you want to show only data for year 2005, you can define it like this: ```XAML @@ -224,8 +212,6 @@ The __AdomdFilterDescription__ is used to filter the data that will be included ``` - - ```C# OlapSetCondition condition = new OlapSetCondition(); condition.Comparison = SetComparison.Includes; @@ -243,15 +229,13 @@ The __AdomdFilterDescription__ is used to filter the data that will be included filterDescription.Condition = condition ``` -As you can see, __AdomdFilterDescription__ Condition expects object of type *OlapSetCondition*. *Items* property of the *OlapSetCondition* object is a collection of all objects that each item must match. In our case we are using string objects as the member names in OLAP Cubes are strings. +As you can see, AdomdFilterDescription Condition expects object of type *OlapSetCondition*. *Items* property of the *OlapSetCondition* object is a collection of all objects that each item must match. In our case we are using string objects as the member names in OLAP Cubes are strings. -As OLAP dimensions are hierarchical, you can use filters for each of the levels by using *"Levels"* property of __AdomdFilterDescription__. *Levels* is a collection of __AdomdLevelFilterDescriptions__ which are members of the user-defined hierarchy of the dimension: +As OLAP dimensions are hierarchical, you can use filters for each of the levels by using *"Levels"* property of AdomdFilterDescription. *Levels* is a collection of `AdomdLevelFilterDescriptions` which are members of the user-defined hierarchy of the dimension: ![Rad Pivot Grid Xmla Data Provider 01](images/RadPivotGrid_XmlaDataProvider_01.png) -In the blue rectangle are all attribute hierarchies - you can use them as a filter by adding them as a new __FilterGroupDescription__. In the red rectangle you can see the user-defined hierarchy of Date.Calendar dimension. You can filter your data by each of the members by adding it to the *Levels* property of __AdomdFilterDescription__: - - +In the blue rectangle are all attribute hierarchies - you can use them as a filter by adding them as a new `FilterGroupDescription`. In the red rectangle you can see the user-defined hierarchy of Date.Calendar dimension. You can filter your data by each of the members by adding it to the *Levels* property of AdomdFilterDescription: ```XAML @@ -280,8 +264,6 @@ In the blue rectangle are all attribute hierarchies - you can use them as a filt ``` - - ```C# AdomdFilterDescription topFilterDescription = new AdomdFilterDescription(); topFilterDescription.MemberName = "[Date].[Calendar]"; @@ -326,4 +308,4 @@ In the blue rectangle are all attribute hierarchies - you can use them as a filt ## See Also * [RadPivotGrid Getting Started]({%slug radpivotgrid-getting-started%}) * [Adding RadPivotFieldList to your project]({%slug radpivotgrid-fieldlist%}) - * [Populating with Data]({%slug radpivotgrid-populating-with-data%}) + * [Populating with Data]({%slug radpivotgrid-populating-with-data%}) \ No newline at end of file From 1de97c309fa3ec83a127bfd3d4113115b943125c Mon Sep 17 00:00:00 2001 From: StenlyGrigorov Date: Wed, 29 Oct 2025 18:11:16 +0200 Subject: [PATCH 3/3] document the support for vs2026 --- .../installation/installation-system-requirements-wpf.md | 2 +- .../visual-studio-extensions/vs-extensions-overview.md | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/getting-started/installation/installation-system-requirements-wpf.md b/getting-started/installation/installation-system-requirements-wpf.md index b1fbea576..1a64c8c24 100644 --- a/getting-started/installation/installation-system-requirements-wpf.md +++ b/getting-started/installation/installation-system-requirements-wpf.md @@ -32,7 +32,7 @@ You can find a complete list with the Operating Systems supported by .NET in the In order to develop applications with Telerik UI for WPF you need to have installed the following development tools: -* [Microsoft Visual Studio](https://visualstudio.microsoft.com/downloads/) 2015/2017/2019/2022 +* [Microsoft Visual Studio](https://visualstudio.microsoft.com/downloads/) 2015/2017/2019/2022/2026 * __.NET Framework / .NET__. The following versions are supported: * [.NET Framework 4.6.2](https://dotnet.microsoft.com/en-us/download/dotnet-framework/net462) to [.NET Framework 4.8](https://dotnet.microsoft.com/en-us/download/dotnet-framework/net48) diff --git a/integration/visual-studio-extensions/vs-extensions-overview.md b/integration/visual-studio-extensions/vs-extensions-overview.md index ed7844dcb..6d045a090 100644 --- a/integration/visual-studio-extensions/vs-extensions-overview.md +++ b/integration/visual-studio-extensions/vs-extensions-overview.md @@ -54,6 +54,10 @@ __Telerik project templates__ + + Visual Studio 2026 + The Visual Studio 2026 is supported with the release of the 2025 Q4. + Visual Studio 2019 and 2022 The latest version of Telerik VSX is distributed and fully supported in these versions of Visual Studio. With Q2 2024, the Telerik VSX supports .NET Framework 4.6.2 and later projects and .NET 6 and later.