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()