diff --git a/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/PropertyGridModule.cs b/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/PropertyGridModule.cs
index e97d9ae0..62e5fa7e 100644
--- a/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/PropertyGridModule.cs
+++ b/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/PropertyGridModule.cs
@@ -25,6 +25,7 @@ namespace Samples.Modules.PropertyGrid
Container.RegisterNavigationType(typeof(DefaultEditors));
Container.RegisterNavigationType(typeof(ExpandableProperties));
Container.RegisterNavigationType(typeof(SpecifyingProperties));
+ Container.RegisterNavigationType(typeof(BindingToStructs));
}
}
}
diff --git a/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Samples.Modules.PropertyGrid.csproj b/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Samples.Modules.PropertyGrid.csproj
index a6ac0113..9783a938 100644
--- a/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Samples.Modules.PropertyGrid.csproj
+++ b/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Samples.Modules.PropertyGrid.csproj
@@ -78,6 +78,9 @@
Settings.settings
True
+
+ BindingToStructs.xaml
+
CustomEditors.xaml
@@ -124,6 +127,10 @@
Designer
MSBuild:Compile
+
+ Designer
+ MSBuild:Compile
+
Designer
MSBuild:Compile
diff --git a/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/BindingToStructs.xaml b/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/BindingToStructs.xaml
new file mode 100644
index 00000000..ff8860f7
--- /dev/null
+++ b/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/BindingToStructs.xaml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/BindingToStructs.xaml.cs b/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/BindingToStructs.xaml.cs
new file mode 100644
index 00000000..4ebdca67
--- /dev/null
+++ b/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/BindingToStructs.xaml.cs
@@ -0,0 +1,96 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+using Samples.Infrastructure.Controls;
+using Microsoft.Practices.Prism.Regions;
+using System.ComponentModel;
+
+namespace Samples.Modules.PropertyGrid.Views
+{
+ ///
+ /// Interaction logic for BindingToStructs.xaml
+ ///
+ [RegionMemberLifetime(KeepAlive = false)]
+ public partial class BindingToStructs : DemoView
+ {
+ public BindingToStructs()
+ {
+ InitializeComponent();
+ _propertyGrid.SelectedObject = Person.CreatePerson();
+ }
+
+ public class Person
+ {
+ [Category("Information")]
+ [DisplayName("First Name")]
+ [Description("This property uses a TextBox as the default editor.")]
+ public string FirstName { get; set; }
+
+ [Category("Information")]
+ [DisplayName("Last Name")]
+ [Description("This property uses a TextBox as the default editor.")]
+ public string LastName { get; set; }
+
+ public Dimension Dimensions { get; set; }
+
+ public static Person CreatePerson()
+ {
+ var person = new Person();
+ person.FirstName = "John";
+ person.LastName = "Doe";
+ person.Dimensions = new Dimension() { Height = 75.0, Weight = 185.76 };
+ return person;
+ }
+ }
+ }
+
+ public struct Dimension
+ {
+ public double Height;
+ public double Weight;
+
+ public Dimension(double height, double weight)
+ {
+ this.Height = height;
+ this.Weight = weight;
+ }
+ }
+
+ public class DimensionsConverter : IValueConverter
+ {
+ static Dimension _originalValue; // the static struct that stores original value at the start of editing
+
+ public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+ {
+ _originalValue = ((Dimension)value);
+
+ if (parameter.ToString() == "Height")
+ return ((Dimension)value).Height;
+ if (parameter.ToString() == "Weight")
+ return ((Dimension)value).Weight;
+
+ return _originalValue;
+ }
+
+ public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
+ {
+ if (parameter.ToString() == "Height")
+ _originalValue = new Dimension(double.Parse(value.ToString()), _originalValue.Weight);
+ if (parameter.ToString() == "Weight")
+ _originalValue = new Dimension(_originalValue.Height, double.Parse(value.ToString()));
+
+ return _originalValue;
+
+ }
+ }
+}
diff --git a/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/CustomEditors.xaml.cs b/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/CustomEditors.xaml.cs
index 4487e474..5fa14b83 100644
--- a/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/CustomEditors.xaml.cs
+++ b/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/CustomEditors.xaml.cs
@@ -6,12 +6,14 @@ using System.Windows;
using System.Windows.Media;
using System.Windows.Controls;
using System.Windows.Data;
+using Microsoft.Practices.Prism.Regions;
namespace Samples.Modules.PropertyGrid.Views
{
///
/// Interaction logic for CustomEditors.xaml
///
+ [RegionMemberLifetime(KeepAlive = false)]
public partial class CustomEditors : DemoView
{
public CustomEditors()
diff --git a/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/CustomItemsSource.xaml.cs b/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/CustomItemsSource.xaml.cs
index e25dc887..7afa8cb2 100644
--- a/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/CustomItemsSource.xaml.cs
+++ b/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/CustomItemsSource.xaml.cs
@@ -5,12 +5,14 @@ using System;
using System.Windows.Media;
using System.Windows;
using Microsoft.Windows.Controls.PropertyGrid.Attributes;
+using Microsoft.Practices.Prism.Regions;
namespace Samples.Modules.PropertyGrid.Views
{
///
/// Interaction logic for CustomItemsSource.xaml
///
+ [RegionMemberLifetime(KeepAlive = false)]
public partial class CustomItemsSource : DemoView
{
public CustomItemsSource()
diff --git a/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/DefaultEditors.xaml.cs b/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/DefaultEditors.xaml.cs
index 0e75c54c..8429e214 100644
--- a/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/DefaultEditors.xaml.cs
+++ b/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/DefaultEditors.xaml.cs
@@ -4,12 +4,14 @@ using System.Collections.Generic;
using System.Windows.Media;
using System.ComponentModel;
using System.Windows;
+using Microsoft.Practices.Prism.Regions;
namespace Samples.Modules.PropertyGrid.Views
{
///
/// Interaction logic for DefaultEditors.xaml
///
+ [RegionMemberLifetime(KeepAlive = false)]
public partial class DefaultEditors : DemoView
{
public DefaultEditors()
diff --git a/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/NavigationView.xaml b/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/NavigationView.xaml
index 96bd94a3..d3b811c2 100644
--- a/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/NavigationView.xaml
+++ b/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/NavigationView.xaml
@@ -13,9 +13,10 @@
+
-
+
diff --git a/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/SpecifyingProperties.xaml.cs b/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/SpecifyingProperties.xaml.cs
index c6597a4e..25d3b2df 100644
--- a/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/SpecifyingProperties.xaml.cs
+++ b/ExtendedWPFToolkitSolution/Src/Samples/Modules/Samples.Modules.PropertyGrid/Views/SpecifyingProperties.xaml.cs
@@ -4,12 +4,14 @@ using System.Collections.Generic;
using System;
using System.Windows.Media;
using System.Windows;
+using Microsoft.Practices.Prism.Regions;
namespace Samples.Modules.PropertyGrid.Views
{
///
/// Interaction logic for SpecifyingProperties.xaml
///
+ [RegionMemberLifetime(KeepAlive = false)]
public partial class SpecifyingProperties : DemoView
{
public SpecifyingProperties()