From e56d840e82fa6c88f82ccbd723f53cff178e707c Mon Sep 17 00:00:00 2001 From: Serge Pilipchuk <112853396+sergepilipchuk@users.noreply.github.com> Date: Fri, 29 Aug 2025 13:20:07 +0400 Subject: [PATCH 01/10] Update the readme file (new template) --- Images/grid.jpg | Bin 0 -> 136711 bytes Readme.md | 115 +++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 104 insertions(+), 11 deletions(-) create mode 100644 Images/grid.jpg diff --git a/Images/grid.jpg b/Images/grid.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b759c41ca10a0d79bf560b83dc415c3a0c60203e GIT binary patch literal 136711 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 - -*Files to look at*: +# WPF Grid (TreeListView) - Sync TreeListNode Expansion with ViewModel + +This example adds two-way synchronization between the expansion state of [`TreeListNode`](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.TreeListNode) and a `Boolean` property in the `ViewModel`. + +![Sync TreeListNode Expansion with ViewModel](./Images/grid.jpg) + +DevExpress does not expose the [`IsExpanded`](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.TreeListNode.IsExpanded) property as a `DependencyProperty`, so direct data binding is not possible. This example uses a custom behavior (`BindableExpandingBehavior`) to simulate two-way binding and keep the [`TreeListView`](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.TreeListView) state in sync with the underlying `ViewModel`. + +Use this technique to: + +* Keep expansion states consistent across user sessions. + +* Programmatically control expanded/collapsed states from the data model. + +* Respond to UI actions through the `ViewModel`. + +You can reuse the `BindableExpandingBehavior` in any [`GridControl`](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.GridCell.GridControl) that uses a hierarchical `TreeListView`. + +## Implementation Details + +### Bindable Expanding Behavior + +The `BindableExpandingBehavior` class syncs `TreeListNode` expansion with a `Boolean` property in your `ViewModel`: + +* Attach the behavior to a `GridControl` and set the `ExpandingProperty` to the name of your `Boolean` property (for example, `IsExpanded`). + +* When the `IsExpanded` property changes in the data object, the corresponding node in the tree expands or collapses automatically. + +* When a user expands or collapses a node in the UI, the behavior updates the `IsExpanded` property in the bound object. + +The logic is handled in two directions: + +1. When data changes + +```csharp +public void PropertyChanged(object obj, PropertyChangedEventArgs args) { + if(args.PropertyName == this.ExpandingProperty) { + var node = FindNodeByValue(obj, treeView.Nodes); + node.IsExpanded = (bool)obj.GetType().GetProperty(args.PropertyName).GetValue(obj); + } +} +``` + +2. When the user expands/collapses a node + +```csharp +void GridNodeChanged(object sender, TreeListNodeEventArgs e) { + var propInfo = e.Node.Content.GetType().GetProperty(this.ExpandingProperty); + propInfo.SetValue(e.Node.Content, e.Node.IsExpanded); +} +``` + +### Data Model + +`Parent` and `Child` classes both expose the `IsExpanded` property that participates in synchronization: + +```csharp +public bool IsExpanded { + get { return this._IsExpanded; } + set { this.SetProperty(ref this._IsExpanded, value, "IsExpanded"); } +} +``` + +Each `Parent` contains a list of `Child` objects, and each `Child` can contain a list of `Toy` objects, creating a three-level tree structure. + +The `DataHelper` class generates a large collection of `Parent` objects with nested children. + +### Setup View + +The main window binds the `GridControl` to an `ObservableCollection`. Each `Parent` has a collection of `Child` objects, and each `Child` has a collection of `Toy` items. The `TreeListView` displays this hierarchy across three levels. + +To synchronize node expansion with the `ViewModel`, the grid includes the `BindableExpandingBehavior`: + +```xaml + + + + + + + + + +``` + +## Files to Review + +* [MainWindow.xaml](./CS/DevExpress.Example04/MainWindow.xaml) (VB: [MainWindow.xaml](./VB/DevExpress.Example04/MainWindow.xaml)) +* [MainWindow.xaml.cs](./CS/DevExpress.Example04/MainWindow.xaml.cs) (VB: [MainWindow.xaml.vb](./VB/DevExpress.Example04/MainWindow.xaml.vb)) * [BindableExpandingBehavior.cs](./CS/DevExpress.Example04/BindableExpandingBehavior.cs) (VB: [BindableExpandingBehavior.vb](./VB/DevExpress.Example04/BindableExpandingBehavior.vb)) * [DataHelper.cs](./CS/DevExpress.Example04/Data/DataHelper.cs) (VB: [DataHelper.vb](./VB/DevExpress.Example04/Data/DataHelper.vb)) * [Parent.cs](./CS/DevExpress.Example04/Data/Parent.cs) (VB: [Parent.vb](./VB/DevExpress.Example04/Data/Parent.vb)) -* **[MainWindow.xaml](./CS/DevExpress.Example04/MainWindow.xaml) (VB: [MainWindow.xaml](./VB/DevExpress.Example04/MainWindow.xaml))** -* [MainWindow.xaml.cs](./CS/DevExpress.Example04/MainWindow.xaml.cs) (VB: [MainWindow.xaml.vb](./VB/DevExpress.Example04/MainWindow.xaml.vb)) - -# WPF Grid (TreeListView) - Sync TreeListNode expansion with ViewModel +## Documentation -

Because the TreeListNode’s IsExpanded property is not a DependencyProperty, there is no way to create TwoWay binding between the IsExpanded and data source item’s property. The example demonstrates how to emulate this functionality using behaviors.

-

BindableExpandingBehavior class attaches to a GridControl to provide the functionality. The BindableExpandingBehavior’s ExpandingProperty must be set and has to contain the name of the property in a data item, which will be used to expand/collapse the TreeListNode. The type of the property has to be Boolean.

-

The behavior will be automatically enabled for each level in TreeListView where a data item contains the same property name set in the BindableExpandingBehavior’s ExpandingProperty.

-

You can easily add the same functionality to your project using BindableExpandingBehavior class and attaching it as a behavior to your GridControl.

+* [TreeListNode](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.TreeListNode) +* [GridControl](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.GridCell.GridControl) +* [IsExpanded](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.TreeListNode.IsExpanded) +* [ExpandingProperty](https://docs.devexpress.com/WPF/DevExpress.Xpf.Core.DXExpander.ExpandingProperty) -
+## More Examples +* [WPF Data Grid - Specify Custom Content for Headers Displayed in the Column Chooser](https://github.com/DevExpress-Examples/wpf-data-grid-custom-content-for-column-chooser-headers) +* [WPF Data Grid - Bind to Dynamic Data](https://github.com/DevExpress-Examples/wpf-bind-gridcontrol-to-dynamic-data) +* [Implement CRUD Operations in the WPF Data Grid](https://github.com/DevExpress-Examples/wpf-data-grid-implement-crud-operations) +* [WPF Grid - Resize Rows Using a Splitter](https://github.com/sergepilipchuk/wpf-grid-resize-rows-using-splitter) ## Does this example address your development requirements/objectives? From a0885aa2c3d5ceaabedf3e9f9ad2961118e73239 Mon Sep 17 00:00:00 2001 From: Serge Pilipchuk <112853396+sergepilipchuk@users.noreply.github.com> Date: Fri, 29 Aug 2025 17:52:48 +0400 Subject: [PATCH 02/10] Update Readme.md Co-authored-by: Dmitry Eliseev <81766219+dmitry-eliseev-devexpress@users.noreply.github.com> --- Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Readme.md b/Readme.md index 8fbe8aa..d397ccb 100644 --- a/Readme.md +++ b/Readme.md @@ -13,7 +13,7 @@ This example adds two-way synchronization between the expansion state of [`TreeL DevExpress does not expose the [`IsExpanded`](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.TreeListNode.IsExpanded) property as a `DependencyProperty`, so direct data binding is not possible. This example uses a custom behavior (`BindableExpandingBehavior`) to simulate two-way binding and keep the [`TreeListView`](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.TreeListView) state in sync with the underlying `ViewModel`. -Use this technique to: +You can use this technique to: * Keep expansion states consistent across user sessions. From 0d295a590175d08be0a59cdfa3f25e4732e1490c Mon Sep 17 00:00:00 2001 From: Serge Pilipchuk <112853396+sergepilipchuk@users.noreply.github.com> Date: Fri, 29 Aug 2025 17:53:07 +0400 Subject: [PATCH 03/10] Update Readme.md Co-authored-by: Dmitry Eliseev <81766219+dmitry-eliseev-devexpress@users.noreply.github.com> --- Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Readme.md b/Readme.md index d397ccb..3f3346e 100644 --- a/Readme.md +++ b/Readme.md @@ -15,7 +15,7 @@ DevExpress does not expose the [`IsExpanded`](https://docs.devexpress.com/WPF/De You can use this technique to: -* Keep expansion states consistent across user sessions. +* Maintain node expanded state consistency across user sessions. * Programmatically control expanded/collapsed states from the data model. From f05e84dea989137ec15ea008e13f35738efe6da8 Mon Sep 17 00:00:00 2001 From: Serge Pilipchuk <112853396+sergepilipchuk@users.noreply.github.com> Date: Fri, 29 Aug 2025 17:53:28 +0400 Subject: [PATCH 04/10] Update Readme.md Co-authored-by: Dmitry Eliseev <81766219+dmitry-eliseev-devexpress@users.noreply.github.com> --- Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Readme.md b/Readme.md index 3f3346e..b042c1e 100644 --- a/Readme.md +++ b/Readme.md @@ -17,7 +17,7 @@ You can use this technique to: * Maintain node expanded state consistency across user sessions. -* Programmatically control expanded/collapsed states from the data model. +* Manage node expanded/collapsed states in code at the data model level. * Respond to UI actions through the `ViewModel`. From cbe63493c965744b6dcd46f1ed44124675d29411 Mon Sep 17 00:00:00 2001 From: Serge Pilipchuk <112853396+sergepilipchuk@users.noreply.github.com> Date: Fri, 29 Aug 2025 18:03:47 +0400 Subject: [PATCH 05/10] Apply suggestions from code review Co-authored-by: Dmitry Eliseev <81766219+dmitry-eliseev-devexpress@users.noreply.github.com> --- Readme.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Readme.md b/Readme.md index b042c1e..5486c30 100644 --- a/Readme.md +++ b/Readme.md @@ -19,25 +19,25 @@ You can use this technique to: * Manage node expanded/collapsed states in code at the data model level. -* Respond to UI actions through the `ViewModel`. +* Respond to UI actions using the `ViewModel`. -You can reuse the `BindableExpandingBehavior` in any [`GridControl`](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.GridCell.GridControl) that uses a hierarchical `TreeListView`. +You can reuse the `BindableExpandingBehavior` class in any [`GridControl`](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.GridCell.GridControl) that includes a hierarchical `TreeListView`. ## Implementation Details ### Bindable Expanding Behavior -The `BindableExpandingBehavior` class syncs `TreeListNode` expansion with a `Boolean` property in your `ViewModel`: +The `BindableExpandingBehavior` class synchronizes the `TreeListNode` expanded state with a `Boolean` property in your `ViewModel`: * Attach the behavior to a `GridControl` and set the `ExpandingProperty` to the name of your `Boolean` property (for example, `IsExpanded`). -* When the `IsExpanded` property changes in the data object, the corresponding node in the tree expands or collapses automatically. +* Every time the `IsExpanded` property value changes in the data object, the corresponding node expands or collapses automatically. * When a user expands or collapses a node in the UI, the behavior updates the `IsExpanded` property in the bound object. -The logic is handled in two directions: +State synchronization is implemented as two event handlers corresponding to forward and reverse directions: -1. When data changes +1. Forward synchronization (when data changes) ```csharp public void PropertyChanged(object obj, PropertyChangedEventArgs args) { @@ -48,7 +48,7 @@ public void PropertyChanged(object obj, PropertyChangedEventArgs args) { } ``` -2. When the user expands/collapses a node +2. Reverse synchronization (when a user expands/collapses a node) ```csharp void GridNodeChanged(object sender, TreeListNodeEventArgs e) { @@ -59,7 +59,7 @@ void GridNodeChanged(object sender, TreeListNodeEventArgs e) { ### Data Model -`Parent` and `Child` classes both expose the `IsExpanded` property that participates in synchronization: +Both `Parent` and `Child` classes expose the `IsExpanded` property required for synchronization: ```csharp public bool IsExpanded { @@ -68,15 +68,15 @@ public bool IsExpanded { } ``` -Each `Parent` contains a list of `Child` objects, and each `Child` can contain a list of `Toy` objects, creating a three-level tree structure. +Each `Parent` contains a list of `Child` objects. In turn, each `Child` can contain a list of `Toy` objects, therefore, creating a three-level tree structure. -The `DataHelper` class generates a large collection of `Parent` objects with nested children. +The `DataHelper` class generates a large collection of `Parent` objects populated with nested `Child` objects. ### Setup View The main window binds the `GridControl` to an `ObservableCollection`. Each `Parent` has a collection of `Child` objects, and each `Child` has a collection of `Toy` items. The `TreeListView` displays this hierarchy across three levels. -To synchronize node expansion with the `ViewModel`, the grid includes the `BindableExpandingBehavior`: +To synchronize node expanded states with the `ViewModel`, the grid includes the `BindableExpandingBehavior` class as follows: ```xaml From ac775c19aef8f148eb9ae562c85f037c7d275268 Mon Sep 17 00:00:00 2001 From: Serge Pilipchuk <112853396+sergepilipchuk@users.noreply.github.com> Date: Fri, 29 Aug 2025 18:52:18 +0400 Subject: [PATCH 06/10] Update Readme.md Co-authored-by: Dmitry Eliseev <81766219+dmitry-eliseev-devexpress@users.noreply.github.com> --- Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Readme.md b/Readme.md index 5486c30..b0af5a8 100644 --- a/Readme.md +++ b/Readme.md @@ -7,7 +7,7 @@ # WPF Grid (TreeListView) - Sync TreeListNode Expansion with ViewModel -This example adds two-way synchronization between the expansion state of [`TreeListNode`](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.TreeListNode) and a `Boolean` property in the `ViewModel`. +This example adds two-way synchronization between the expanded state of each [`TreeListNode`](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.TreeListNode) and a `Boolean` property in the `ViewModel`. ![Sync TreeListNode Expansion with ViewModel](./Images/grid.jpg) From a49284154e5a97a06720e3bb02854ab29a294665 Mon Sep 17 00:00:00 2001 From: Serge Pilipchuk <112853396+sergepilipchuk@users.noreply.github.com> Date: Fri, 29 Aug 2025 18:52:57 +0400 Subject: [PATCH 07/10] Update Readme.md Co-authored-by: Dmitry Eliseev <81766219+dmitry-eliseev-devexpress@users.noreply.github.com> --- Readme.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Readme.md b/Readme.md index b0af5a8..cb04bb3 100644 --- a/Readme.md +++ b/Readme.md @@ -11,7 +11,11 @@ This example adds two-way synchronization between the expanded state of each [`T ![Sync TreeListNode Expansion with ViewModel](./Images/grid.jpg) -DevExpress does not expose the [`IsExpanded`](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.TreeListNode.IsExpanded) property as a `DependencyProperty`, so direct data binding is not possible. This example uses a custom behavior (`BindableExpandingBehavior`) to simulate two-way binding and keep the [`TreeListView`](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.TreeListView) state in sync with the underlying `ViewModel`. +[`IsExpanded`](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.TreeListNode.IsExpanded) is not a dependency property. Therefore, you cannot bind this property directly to a `Boolean` property in your data model. + +This example defines a helper class (`BindableExpandingBehavior`) that attaches to a `GridControl` and synchronizes the expanded state for each node with the [`IsExpanded`](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.TreeListNode.IsExpanded) property in bound data objects. + +The `BindableExpandingBehavior` class updates each node in response to underlying property value changes. This helper class also tracks expand/collapse actions in the UI and updates the corresponding data property to reflect the change. You can use this technique to: From 92f17953ea9420486b0009429645224c82e3253b Mon Sep 17 00:00:00 2001 From: Serge Pilipchuk <112853396+sergepilipchuk@users.noreply.github.com> Date: Fri, 29 Aug 2025 18:53:32 +0400 Subject: [PATCH 08/10] Update Readme.md Co-authored-by: Dmitry Eliseev <81766219+dmitry-eliseev-devexpress@users.noreply.github.com> --- Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Readme.md b/Readme.md index cb04bb3..d3d10d2 100644 --- a/Readme.md +++ b/Readme.md @@ -33,7 +33,7 @@ You can reuse the `BindableExpandingBehavior` class in any [`GridControl`](https The `BindableExpandingBehavior` class synchronizes the `TreeListNode` expanded state with a `Boolean` property in your `ViewModel`: -* Attach the behavior to a `GridControl` and set the `ExpandingProperty` to the name of your `Boolean` property (for example, `IsExpanded`). +* The example attaches `BindableExpandingBehavior` to the `GridControl` and sets its `ExpandingProperty` to `IsExpanded` (the name of the property declared in each data item). * Every time the `IsExpanded` property value changes in the data object, the corresponding node expands or collapses automatically. From 7a9b08f6f1d0f63298561bc02fb5f28990760d08 Mon Sep 17 00:00:00 2001 From: Serge Pilipchuk <112853396+sergepilipchuk@users.noreply.github.com> Date: Fri, 29 Aug 2025 18:53:51 +0400 Subject: [PATCH 09/10] Update Readme.md Co-authored-by: Dmitry Eliseev <81766219+dmitry-eliseev-devexpress@users.noreply.github.com> --- Readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Readme.md b/Readme.md index d3d10d2..1d94eee 100644 --- a/Readme.md +++ b/Readme.md @@ -37,7 +37,7 @@ The `BindableExpandingBehavior` class synchronizes the `TreeListNode` expanded s * Every time the `IsExpanded` property value changes in the data object, the corresponding node expands or collapses automatically. -* When a user expands or collapses a node in the UI, the behavior updates the `IsExpanded` property in the bound object. +* When a user expands or collapses a node in the UI, `BindableExpandingBehavior` updates the `IsExpanded` property value for the bound object. State synchronization is implemented as two event handlers corresponding to forward and reverse directions: From 533d8cd5d8aee7a1375279356f98a38ede645b0f Mon Sep 17 00:00:00 2001 From: Serge Pilipchuk <112853396+sergepilipchuk@users.noreply.github.com> Date: Mon, 1 Sep 2025 11:32:41 +0400 Subject: [PATCH 10/10] Apply suggestions from code review Co-authored-by: dirkpieterse --- Readme.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Readme.md b/Readme.md index 1d94eee..a49da07 100644 --- a/Readme.md +++ b/Readme.md @@ -11,7 +11,7 @@ This example adds two-way synchronization between the expanded state of each [`T ![Sync TreeListNode Expansion with ViewModel](./Images/grid.jpg) -[`IsExpanded`](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.TreeListNode.IsExpanded) is not a dependency property. Therefore, you cannot bind this property directly to a `Boolean` property in your data model. +[`IsExpanded`](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.TreeListNode.IsExpanded) is not a dependency property - you cannot bind this property directly to a `Boolean` property in your data model. This example defines a helper class (`BindableExpandingBehavior`) that attaches to a `GridControl` and synchronizes the expanded state for each node with the [`IsExpanded`](https://docs.devexpress.com/WPF/DevExpress.Xpf.Grid.TreeListNode.IsExpanded) property in bound data objects. @@ -31,7 +31,7 @@ You can reuse the `BindableExpandingBehavior` class in any [`GridControl`](https ### Bindable Expanding Behavior -The `BindableExpandingBehavior` class synchronizes the `TreeListNode` expanded state with a `Boolean` property in your `ViewModel`: +The `BindableExpandingBehavior` class synchronizes the `TreeListNode`'s expanded state with a `Boolean` property in your `ViewModel`: * The example attaches `BindableExpandingBehavior` to the `GridControl` and sets its `ExpandingProperty` to `IsExpanded` (the name of the property declared in each data item). @@ -72,7 +72,7 @@ public bool IsExpanded { } ``` -Each `Parent` contains a list of `Child` objects. In turn, each `Child` can contain a list of `Toy` objects, therefore, creating a three-level tree structure. +Each `Parent` contains a list of `Child` objects. In turn, each `Child` can contain a list of `Toy` objects, creating a three-level tree structure. The `DataHelper` class generates a large collection of `Parent` objects populated with nested `Child` objects.