diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/AssemblyVersionInfo.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/AssemblyVersionInfo.cs
index c6ea985d..bbd6826e 100644
--- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/AssemblyVersionInfo.cs
+++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/AssemblyVersionInfo.cs
@@ -14,19 +14,116 @@
***********************************************************************************/
-#pragma warning disable 0436
-[assembly: System.Reflection.AssemblyVersion( _XceedVersionInfo.Version )]
-#pragma warning restore 0436
+#region Using directives
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Security;
+using System.Windows;
+using System.Windows.Markup;
+
+#endregion
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Xceed Toolkit for WPF")]
+[assembly: AssemblyDescription("This assembly implements various Windows Presentation Framework controls.")]
+
+[assembly: AssemblyCompany("Xceed Software Inc.")]
+[assembly: AssemblyProduct("Xceed Toolkit for WPF")]
+[assembly: AssemblyCopyright("Copyright (C) Xceed Software Inc. 2007-2017")]
+[assembly: AssemblyCulture("")]
+
+
+// Needed to enable xbap scenarios
+[assembly: AllowPartiallyTrustedCallers]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+[assembly: CLSCompliant(true)]
+
+
+[assembly: InternalsVisibleTo("Xceed.Wpf.Toolkit.Themes.Office2007" + ",PublicKey=" +
+ "0024000004800000940000000602000000240000525341310004000001000100d59d8147eb2015" +
+ "ca98a92da860fd766d101271d8c2f545894870fd6183255737d79347bbf5250291ae75651e1150" +
+ "1b7452ee003b80b936614cdda51db8eb6f8fde913e67d45395b480a992be17bf04744a7fe803ea" +
+ "131b925dcf84a73d22264352eca7c3fcf9387f3eee1d60ac7974f04866e6c72928dc0609abe341" +
+ "f92cbfb5")]
+
+[assembly: InternalsVisibleTo("Xceed.Wpf.Toolkit.Themes.Metro" + ",PublicKey=" +
+ "0024000004800000940000000602000000240000525341310004000001000100d59d8147eb2015" +
+ "ca98a92da860fd766d101271d8c2f545894870fd6183255737d79347bbf5250291ae75651e1150" +
+ "1b7452ee003b80b936614cdda51db8eb6f8fde913e67d45395b480a992be17bf04744a7fe803ea" +
+ "131b925dcf84a73d22264352eca7c3fcf9387f3eee1d60ac7974f04866e6c72928dc0609abe341" +
+ "f92cbfb5")]
+
+[assembly: InternalsVisibleTo("Xceed.Wpf.Toolkit.Themes.Windows10" + ",PublicKey=" +
+ "0024000004800000940000000602000000240000525341310004000001000100d59d8147eb2015" +
+ "ca98a92da860fd766d101271d8c2f545894870fd6183255737d79347bbf5250291ae75651e1150" +
+ "1b7452ee003b80b936614cdda51db8eb6f8fde913e67d45395b480a992be17bf04744a7fe803ea" +
+ "131b925dcf84a73d22264352eca7c3fcf9387f3eee1d60ac7974f04866e6c72928dc0609abe341" +
+ "f92cbfb5")]
+
+
+
+
+
+//In order to begin building localizable applications, set
+//CultureYouAreCodingWith in your .csproj file
+//inside a . For example, if you are using US english
+//in your source files, set the to en-US. Then uncomment
+//the NeutralResourceLanguage attribute below. Update the "en-US" in
+//the line below to match the UICulture setting in the project file.
+
+//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
+
+
+[assembly: ThemeInfo(
+ ResourceDictionaryLocation.SourceAssembly, //where theme specific resource dictionaries are located
+ //(used if a resource is not found in the page,
+ // or application resource dictionaries)
+ ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
+ //(used if a resource is not found in the page,
+ // app, or any theme specific resource dictionaries)
+)]
+
+[assembly: XmlnsPrefix("http://schemas.xceed.com/wpf/xaml/toolkit", "xctk")]
+[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit")]
+[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.Core.Converters")]
+[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.Core.Input")]
+[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.Core.Media")]
+[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.Core.Utilities")]
+[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.Chromes")]
+[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.Primitives")]
+[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.PropertyGrid")]
+[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.PropertyGrid.Attributes")]
+[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.PropertyGrid.Commands")]
+[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.PropertyGrid.Converters")]
+[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.PropertyGrid.Editors")]
+[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.Zoombox")]
+[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.Panels")]
+
+
+#pragma warning disable 1699
+[assembly: AssemblyDelaySign(false)]
+[assembly: AssemblyKeyFile(@"sn.snk")]
+[assembly: AssemblyKeyName("")]
+#pragma warning restore 1699
internal static class _XceedVersionInfo
{
- [System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
- public const string BaseVersion = "3.4";
- [System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
- public const string Version = BaseVersion +
- ".0.0";
- [System.Diagnostics.CodeAnalysis.SuppressMessage( "Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields" )]
- public const string PublicKeyToken = "ba83ff368b7563c6";
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ public const string BaseVersion = "3.4";
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ public const string Version = BaseVersion +
+ ".0.0";
+ [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Performance", "CA1823:AvoidUnusedPrivateFields")]
+ public const string PublicKeyToken = "ba83ff368b7563c6";
}
diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CollectionControl/Implementation/CollectionControlDialog.xaml.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CollectionControl/Implementation/CollectionControlDialog.xaml.cs
index db766804..c85a6ced 100644
--- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CollectionControl/Implementation/CollectionControlDialog.xaml.cs
+++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/CollectionControl/Implementation/CollectionControlDialog.xaml.cs
@@ -18,331 +18,333 @@ using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
-using System.Windows;
-using System.Windows.Media;
-using Xceed.Wpf.Toolkit.Core.Utilities;
+using System.IO;
using System.Linq;
using System.Runtime.Serialization;
-using System.Security;
-using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
+using System.Security;
+using System.Windows;
+using System.Windows.Media;
+using Xceed.Wpf.Toolkit.Core.Utilities;
using Xceed.Wpf.Toolkit.PropertyGrid;
namespace Xceed.Wpf.Toolkit
{
- public partial class CollectionControlDialogBase :
- Window
- {
- }
-
- ///
- /// Interaction logic for CollectionControlDialog.xaml
- ///
- public partial class CollectionControlDialog : CollectionControlDialogBase
- {
- #region Private Members
-
- private IList originalData = new List();
-
- #endregion
-
- #region Properties
-
- public static readonly DependencyProperty ItemsSourceProperty = DependencyProperty.Register( "ItemsSource", typeof( IEnumerable ), typeof( CollectionControlDialog ), new UIPropertyMetadata( null ) );
- public IEnumerable ItemsSource
- {
- get
- {
- return ( IEnumerable )GetValue( ItemsSourceProperty );
- }
- set
- {
- SetValue( ItemsSourceProperty, value );
- }
- }
-
- public static readonly DependencyProperty ItemsSourceTypeProperty = DependencyProperty.Register( "ItemsSourceType", typeof( Type ), typeof( CollectionControlDialog ), new UIPropertyMetadata( null ) );
- public Type ItemsSourceType
+ public partial class CollectionControlDialogBase :
+ Window
{
- get
- {
- return ( Type )GetValue( ItemsSourceTypeProperty );
- }
- set
- {
- SetValue( ItemsSourceTypeProperty, value );
- }
}
- public static readonly DependencyProperty NewItemTypesProperty = DependencyProperty.Register( "NewItemTypes", typeof( IList ), typeof( CollectionControlDialog ), new UIPropertyMetadata( null ) );
- public IList NewItemTypes
+ ///
+ /// Interaction logic for CollectionControlDialog.xaml
+ ///
+ public partial class CollectionControlDialog : CollectionControlDialogBase
{
- get
- {
- return ( IList )GetValue( NewItemTypesProperty );
- }
- set
- {
- SetValue( NewItemTypesProperty, value );
- }
- }
+ #region Private Members
- public static readonly DependencyProperty IsReadOnlyProperty = DependencyProperty.Register( "IsReadOnly", typeof( bool ), typeof( CollectionControlDialog ), new UIPropertyMetadata( false ) );
- public bool IsReadOnly
- {
- get
- {
- return ( bool )GetValue( IsReadOnlyProperty );
- }
- set
- {
- SetValue( IsReadOnlyProperty, value );
- }
- }
+ private IList originalData = new List();
- public static readonly DependencyProperty EditorDefinitionsProperty = DependencyProperty.Register( "EditorDefinitions", typeof( EditorDefinitionCollection ), typeof( CollectionControlDialog ), new UIPropertyMetadata( null ) );
- public EditorDefinitionCollection EditorDefinitions
- {
- get
- {
- return ( EditorDefinitionCollection )GetValue( EditorDefinitionsProperty );
- }
- set
- {
- SetValue( EditorDefinitionsProperty, value );
- }
- }
+ #endregion
- public CollectionControl CollectionControl
- {
- get
- {
- return _collectionControl;
- }
- }
+ #region Properties
- #endregion //Properties
+ public static readonly DependencyProperty ItemsSourceProperty = DependencyProperty.Register("ItemsSource", typeof(IEnumerable), typeof(CollectionControlDialog), new UIPropertyMetadata(null));
+ public IEnumerable ItemsSource
+ {
+ get
+ {
+ return (IEnumerable)GetValue(ItemsSourceProperty);
+ }
+ set
+ {
+ SetValue(ItemsSourceProperty, value);
+ }
+ }
- #region Constructors
+ public static readonly DependencyProperty ItemsSourceTypeProperty = DependencyProperty.Register("ItemsSourceType", typeof(Type), typeof(CollectionControlDialog), new UIPropertyMetadata(null));
+ public Type ItemsSourceType
+ {
+ get
+ {
+ return (Type)GetValue(ItemsSourceTypeProperty);
+ }
+ set
+ {
+ SetValue(ItemsSourceTypeProperty, value);
+ }
+ }
- public CollectionControlDialog()
- {
- InitializeComponent();
- }
+ public static readonly DependencyProperty NewItemTypesProperty = DependencyProperty.Register("NewItemTypes", typeof(IList), typeof(CollectionControlDialog), new UIPropertyMetadata(null));
+ public IList NewItemTypes
+ {
+ get
+ {
+ return (IList)GetValue(NewItemTypesProperty);
+ }
+ set
+ {
+ SetValue(NewItemTypesProperty, value);
+ }
+ }
- public CollectionControlDialog( Type itemsourceType )
- : this()
- {
- ItemsSourceType = itemsourceType;
- }
+ public static readonly DependencyProperty IsReadOnlyProperty = DependencyProperty.Register("IsReadOnly", typeof(bool), typeof(CollectionControlDialog), new UIPropertyMetadata(false));
+ public bool IsReadOnly
+ {
+ get
+ {
+ return (bool)GetValue(IsReadOnlyProperty);
+ }
+ set
+ {
+ SetValue(IsReadOnlyProperty, value);
+ }
+ }
- public CollectionControlDialog( Type itemsourceType, IList newItemTypes )
- : this( itemsourceType )
- {
- NewItemTypes = newItemTypes;
- }
+ public static readonly DependencyProperty EditorDefinitionsProperty = DependencyProperty.Register("EditorDefinitions", typeof(EditorDefinitionCollection), typeof(CollectionControlDialog), new UIPropertyMetadata(null));
+ public EditorDefinitionCollection EditorDefinitions
+ {
+ get
+ {
+ return (EditorDefinitionCollection)GetValue(EditorDefinitionsProperty);
+ }
+ set
+ {
+ SetValue(EditorDefinitionsProperty, value);
+ }
+ }
- #endregion //Constructors
+ public CollectionControl CollectionControl
+ {
+ get
+ {
+ return _collectionControl;
+ }
+ }
- #region Overrides
+ #endregion //Properties
- protected override void OnSourceInitialized( EventArgs e )
- {
- base.OnSourceInitialized( e );
+ #region Constructors
- //Backup data if case "Cancel" is clicked.
- if( this.ItemsSource != null )
- {
- foreach( var item in this.ItemsSource )
+ public CollectionControlDialog()
{
- originalData.Add( this.Clone( item ) );
+ InitializeComponent();
}
- }
- }
- #endregion
-
- #region Event Handlers
+ public CollectionControlDialog(Type itemsourceType)
+ : this()
+ {
+ ItemsSourceType = itemsourceType;
+ }
- private void OkButton_Click( object sender, RoutedEventArgs e )
- {
- if( this.ItemsSource is IDictionary )
- {
- if( !this.AreDictionaryKeysValid() )
+ public CollectionControlDialog(Type itemsourceType, IList newItemTypes)
+ : this(itemsourceType)
{
- MessageBox.Show( "All dictionary items should have distinct non-null Key values.", "Warning" );
- return;
+ NewItemTypes = newItemTypes;
}
- }
- _collectionControl.PersistChanges();
- this.DialogResult = true;
- this.Close();
- }
+ #endregion //Constructors
- private void CancelButton_Click( object sender, RoutedEventArgs e )
- {
- _collectionControl.PersistChanges( originalData );
- this.DialogResult = false;
- this.Close();
- }
+ #region Overrides
- #endregion //Event Hanlders
+ protected override void OnSourceInitialized(EventArgs e)
+ {
+ base.OnSourceInitialized(e);
- #region Private Methods
+ //Backup data if case "Cancel" is clicked.
+ if (this.ItemsSource != null)
+ {
+ foreach (var item in this.ItemsSource)
+ {
+ originalData.Add(this.Clone(item));
+ }
+ }
+ }
- [SecuritySafeCritical]
- private object Clone( object source )
- {
- if( source == null )
- return null;
+ #endregion
- object result = null;
- var sourceType = source.GetType();
+ #region Event Handlers
- if( source is Array )
- {
- using( var stream = new MemoryStream() )
- {
- var formatter = new BinaryFormatter();
- formatter.Serialize( stream, source );
- stream.Seek( 0, SeekOrigin.Begin );
- result = ( Array )formatter.Deserialize( stream );
- }
- }
- // For IDictionary, we need to create EditableKeyValuePair to edit the Key-Value.
- else if( ( this.ItemsSource is IDictionary )
- && sourceType.IsGenericType
- && typeof( KeyValuePair<,> ).IsAssignableFrom( sourceType.GetGenericTypeDefinition() ) )
- {
- result = this.GenerateEditableKeyValuePair( source );
- }
- else
- {
- // Initialized a new object with default values
- try
+ private void OkButton_Click(object sender, RoutedEventArgs e)
{
- result = FormatterServices.GetUninitializedObject( sourceType );
- }
- catch( Exception )
- {
- }
+ if (this.ItemsSource is IDictionary)
+ {
+ if (!this.AreDictionaryKeysValid())
+ {
+ MessageBox.Show("All dictionary items should have distinct non-null Key values.", "Warning");
+ return;
+ }
+ }
- var constructor = sourceType.GetConstructor( Type.EmptyTypes );
- if( constructor != null )
- {
- constructor.Invoke( result, null );
+ _collectionControl.PersistChanges();
+ this.DialogResult = true;
+ this.Close();
}
- else
+
+ private void CancelButton_Click(object sender, RoutedEventArgs e)
{
- result = source;
+ _collectionControl.PersistChanges(originalData);
+ this.DialogResult = false;
+ this.Close();
}
- }
- Debug.Assert( result != null );
- if( result != null )
- {
- var properties = sourceType.GetProperties();
- foreach( var propertyInfo in properties )
+ #endregion //Event Hanlders
+
+ #region Private Methods
+
+ [SecuritySafeCritical]
+ private object Clone(object source)
{
- var parameters = propertyInfo.GetIndexParameters();
- var index = parameters.GetLength( 0 ) == 0 ? null : new object[] { parameters.GetLength( 0 ) - 1 };
- var propertyInfoValue = propertyInfo.GetValue( source, index );
-
- if( propertyInfo.CanWrite )
- {
- // Look for nested object
- if( propertyInfo.PropertyType.IsClass
- && ( propertyInfo.PropertyType != typeof( Transform ) )
- && !propertyInfo.PropertyType.Equals( typeof( string ) ) )
+ if (source == null)
+ return null;
+
+ object result = null;
+ var sourceType = source.GetType();
+
+ if (source is Array)
{
- // We have a Collection/List of T.
- if( propertyInfo.PropertyType.IsGenericType )
- {
- // Clone sub-objects if the T are non-primitive types objects.
- var arg = propertyInfo.PropertyType.GetGenericArguments().FirstOrDefault();
- if( ( arg != null ) && !arg.IsPrimitive && !arg.Equals( typeof( String ) ) && !arg.IsEnum )
+ using (var stream = new MemoryStream())
{
- var nestedObject = this.Clone( propertyInfoValue );
- propertyInfo.SetValue( result, nestedObject, null );
+#pragma warning disable SYSLIB0011 // Type or member is obsolete
+ var formatter = new BinaryFormatter();
+#pragma warning restore SYSLIB0011 // Type or member is obsolete
+ formatter.Serialize(stream, source);
+ stream.Seek(0, SeekOrigin.Begin);
+ result = (Array)formatter.Deserialize(stream);
}
- else
+ }
+ // For IDictionary, we need to create EditableKeyValuePair to edit the Key-Value.
+ else if ((this.ItemsSource is IDictionary)
+ && sourceType.IsGenericType
+ && typeof(KeyValuePair<,>).IsAssignableFrom(sourceType.GetGenericTypeDefinition()))
+ {
+ result = this.GenerateEditableKeyValuePair(source);
+ }
+ else
+ {
+ // Initialized a new object with default values
+ try
+ {
+ result = FormatterServices.GetUninitializedObject(sourceType);
+ }
+ catch (Exception)
+ {
+ }
+
+ var constructor = sourceType.GetConstructor(Type.EmptyTypes);
+ if (constructor != null)
{
- // copy object if the T are primitive types objects.
- propertyInfo.SetValue( result, propertyInfoValue, null );
+ constructor.Invoke(result, null);
}
- }
- else
- {
- var nestedObject = this.Clone( propertyInfoValue );
- if( nestedObject != null )
+ else
{
- // For T object included in List/Collections, Add it to the List/Collection of T.
- if( index != null )
- {
- result.GetType().GetMethod( "Add" ).Invoke( result, new[] { nestedObject } );
- }
- else
- {
- propertyInfo.SetValue( result, nestedObject, null );
- }
+ result = source;
}
- }
}
- else
+ Debug.Assert(result != null);
+ if (result != null)
{
- // For T object included in List/Collections, Add it to the List/Collection of T.
- if( index != null )
- {
- result.GetType().GetMethod( "Add" ).Invoke( result, new[] { propertyInfoValue } );
- }
- else
- {
- // copy regular object
- propertyInfo.SetValue( result, propertyInfoValue, null );
- }
+ var properties = sourceType.GetProperties();
+
+ foreach (var propertyInfo in properties)
+ {
+ var parameters = propertyInfo.GetIndexParameters();
+ var index = parameters.GetLength(0) == 0 ? null : new object[] { parameters.GetLength(0) - 1 };
+ var propertyInfoValue = propertyInfo.GetValue(source, index);
+
+ if (propertyInfo.CanWrite)
+ {
+ // Look for nested object
+ if (propertyInfo.PropertyType.IsClass
+ && (propertyInfo.PropertyType != typeof(Transform))
+ && !propertyInfo.PropertyType.Equals(typeof(string)))
+ {
+ // We have a Collection/List of T.
+ if (propertyInfo.PropertyType.IsGenericType)
+ {
+ // Clone sub-objects if the T are non-primitive types objects.
+ var arg = propertyInfo.PropertyType.GetGenericArguments().FirstOrDefault();
+ if ((arg != null) && !arg.IsPrimitive && !arg.Equals(typeof(String)) && !arg.IsEnum)
+ {
+ var nestedObject = this.Clone(propertyInfoValue);
+ propertyInfo.SetValue(result, nestedObject, null);
+ }
+ else
+ {
+ // copy object if the T are primitive types objects.
+ propertyInfo.SetValue(result, propertyInfoValue, null);
+ }
+ }
+ else
+ {
+ var nestedObject = this.Clone(propertyInfoValue);
+ if (nestedObject != null)
+ {
+ // For T object included in List/Collections, Add it to the List/Collection of T.
+ if (index != null)
+ {
+ result.GetType().GetMethod("Add").Invoke(result, new[] { nestedObject });
+ }
+ else
+ {
+ propertyInfo.SetValue(result, nestedObject, null);
+ }
+ }
+ }
+ }
+ else
+ {
+ // For T object included in List/Collections, Add it to the List/Collection of T.
+ if (index != null)
+ {
+ result.GetType().GetMethod("Add").Invoke(result, new[] { propertyInfoValue });
+ }
+ else
+ {
+ // copy regular object
+ propertyInfo.SetValue(result, propertyInfoValue, null);
+ }
+ }
+ }
+ }
}
- }
+
+ return result;
}
- }
- return result;
- }
+ private object GenerateEditableKeyValuePair(object source)
+ {
+ var sourceType = source.GetType();
+ if ((sourceType.GetGenericArguments() == null) || (sourceType.GetGenericArguments().GetLength(0) != 2))
+ return null;
- private object GenerateEditableKeyValuePair( object source )
- {
- var sourceType = source.GetType();
- if( ( sourceType.GetGenericArguments() == null ) || ( sourceType.GetGenericArguments().GetLength( 0 ) != 2 ) )
- return null;
-
- var propInfoKey = sourceType.GetProperty( "Key" );
- var propInfoValue = sourceType.GetProperty( "Value" );
- if( ( propInfoKey != null ) && ( propInfoValue != null ) )
- {
- return ListUtilities.CreateEditableKeyValuePair( propInfoKey.GetValue( source, null )
- , sourceType.GetGenericArguments()[ 0 ]
- , propInfoValue.GetValue( source, null )
- , sourceType.GetGenericArguments()[ 1 ] );
- }
- return null;
- }
+ var propInfoKey = sourceType.GetProperty("Key");
+ var propInfoValue = sourceType.GetProperty("Value");
+ if ((propInfoKey != null) && (propInfoValue != null))
+ {
+ return ListUtilities.CreateEditableKeyValuePair(propInfoKey.GetValue(source, null)
+ , sourceType.GetGenericArguments()[0]
+ , propInfoValue.GetValue(source, null)
+ , sourceType.GetGenericArguments()[1]);
+ }
+ return null;
+ }
- private bool AreDictionaryKeysValid()
- {
- var keys = _collectionControl.Items.Select( x =>
- {
- var keyType = x.GetType().GetProperty( "Key" );
- if( keyType != null )
+ private bool AreDictionaryKeysValid()
{
- return keyType.GetValue( x, null );
+ var keys = _collectionControl.Items.Select(x =>
+ {
+ var keyType = x.GetType().GetProperty("Key");
+ if (keyType != null)
+ {
+ return keyType.GetValue(x, null);
+ }
+ return null;
+ });
+
+ return (keys.Distinct().Count() == _collectionControl.Items.Count)
+ && keys.All(x => x != null);
}
- return null;
- } );
- return ( keys.Distinct().Count() == _collectionControl.Items.Count )
- && keys.All( x => x != null );
+ #endregion
}
-
- #endregion
- }
}
diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Properties/AssemblyInfo.cs b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Properties/AssemblyInfo.cs
deleted file mode 100644
index e2c7d4b1..00000000
--- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,120 +0,0 @@
-/*************************************************************************************
-
- Extended WPF Toolkit
-
- Copyright (C) 2007-2013 Xceed Software Inc.
-
- This program is provided to you under the terms of the Microsoft Public
- License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
-
- For more features, controls, and fast professional support,
- pick up the Plus Edition at http://xceed.com/wpf_toolkit
-
- Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
-
- ***********************************************************************************/
-
-#region Using directives
-
-using System;
-using System.Globalization;
-using System.Reflection;
-using System.Resources;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Security;
-using System.Windows;
-using System.Windows.Markup;
-
-#endregion
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle( "Xceed Toolkit for WPF" )]
-[assembly: AssemblyDescription("This assembly implements various Windows Presentation Framework controls.")]
-
-[assembly: AssemblyCompany("Xceed Software Inc.")]
-[assembly: AssemblyProduct( "Xceed Toolkit for WPF" )]
-[assembly: AssemblyCopyright( "Copyright (C) Xceed Software Inc. 2007-2017" )]
-[assembly: AssemblyCulture( "" )]
-
-
-// Needed to enable xbap scenarios
-[assembly: AllowPartiallyTrustedCallers]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-[assembly: CLSCompliant(true)]
-
-
-[assembly: InternalsVisibleTo( "Xceed.Wpf.Toolkit.Themes.Office2007" + ",PublicKey=" +
- "0024000004800000940000000602000000240000525341310004000001000100d59d8147eb2015" +
- "ca98a92da860fd766d101271d8c2f545894870fd6183255737d79347bbf5250291ae75651e1150" +
- "1b7452ee003b80b936614cdda51db8eb6f8fde913e67d45395b480a992be17bf04744a7fe803ea" +
- "131b925dcf84a73d22264352eca7c3fcf9387f3eee1d60ac7974f04866e6c72928dc0609abe341" +
- "f92cbfb5")]
-
-[assembly: InternalsVisibleTo( "Xceed.Wpf.Toolkit.Themes.Metro" + ",PublicKey=" +
- "0024000004800000940000000602000000240000525341310004000001000100d59d8147eb2015" +
- "ca98a92da860fd766d101271d8c2f545894870fd6183255737d79347bbf5250291ae75651e1150" +
- "1b7452ee003b80b936614cdda51db8eb6f8fde913e67d45395b480a992be17bf04744a7fe803ea" +
- "131b925dcf84a73d22264352eca7c3fcf9387f3eee1d60ac7974f04866e6c72928dc0609abe341" +
- "f92cbfb5")]
-
-[assembly: InternalsVisibleTo( "Xceed.Wpf.Toolkit.Themes.Windows10" + ",PublicKey=" +
- "0024000004800000940000000602000000240000525341310004000001000100d59d8147eb2015" +
- "ca98a92da860fd766d101271d8c2f545894870fd6183255737d79347bbf5250291ae75651e1150" +
- "1b7452ee003b80b936614cdda51db8eb6f8fde913e67d45395b480a992be17bf04744a7fe803ea" +
- "131b925dcf84a73d22264352eca7c3fcf9387f3eee1d60ac7974f04866e6c72928dc0609abe341" +
- "f92cbfb5")]
-
-
-
-
-
-//In order to begin building localizable applications, set
-//CultureYouAreCodingWith in your .csproj file
-//inside a . For example, if you are using US english
-//in your source files, set the to en-US. Then uncomment
-//the NeutralResourceLanguage attribute below. Update the "en-US" in
-//the line below to match the UICulture setting in the project file.
-
-//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
-
-
-[assembly: ThemeInfo(
- ResourceDictionaryLocation.SourceAssembly, //where theme specific resource dictionaries are located
- //(used if a resource is not found in the page,
- // or application resource dictionaries)
- ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
- //(used if a resource is not found in the page,
- // app, or any theme specific resource dictionaries)
-)]
-
-[assembly: XmlnsPrefix("http://schemas.xceed.com/wpf/xaml/toolkit", "xctk")]
-[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit")]
-[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.Core.Converters" )]
-[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.Core.Input" )]
-[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.Core.Media")]
-[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.Core.Utilities")]
-[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.Chromes")]
-[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.Primitives")]
-[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.PropertyGrid")]
-[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.PropertyGrid.Attributes")]
-[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.PropertyGrid.Commands")]
-[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.PropertyGrid.Converters")]
-[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.PropertyGrid.Editors")]
-[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.Zoombox" )]
-[assembly: XmlnsDefinition("http://schemas.xceed.com/wpf/xaml/toolkit", "Xceed.Wpf.Toolkit.Panels" )]
-
-
-#pragma warning disable 1699
-[assembly: AssemblyDelaySign( false )]
-[assembly: AssemblyKeyFile( @"..\..\sn.snk" )]
-[assembly: AssemblyKeyName( "" )]
-#pragma warning restore 1699
-
-
diff --git a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Xceed.Wpf.Toolkit.csproj b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Xceed.Wpf.Toolkit.csproj
index 80392333..776f70b9 100644
--- a/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Xceed.Wpf.Toolkit.csproj
+++ b/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Xceed.Wpf.Toolkit.csproj
@@ -1,678 +1,16 @@
-
-
+
- Debug
- AnyCPU
- 8.0.30703
- 2.0
- {72E591D6-8F83-4D8C-8F67-9C325E623234}
+ net8.0-windows
Library
- Properties
- Xceed.Wpf.Toolkit
- Xceed.Wpf.Toolkit
- v4.0
- Client
- 512
- {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- 4
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
+ false
+ true
+ true
-
-
-
-
-
-
-
-
-
-
- 4.0
-
-
-
-
-
-
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- MSBuild:Compile
- Designer
-
-
- Designer
- MSBuild:Compile
-
-
- MSBuild:Compile
- Designer
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- MSBuild:Compile
- Designer
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
- Designer
- MSBuild:Compile
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CollectionControlDialog.xaml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
-
- Code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Code
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -741,12 +79,6 @@
-
-
- ErrorMessages.cs
- Designer
-
-
@@ -782,17 +114,11 @@
-
+
-
+
+
+
-
-
\ No newline at end of file
diff --git a/ExtendedWPFToolkitSolution/Xceed.Wpf.Toolkit.sln b/ExtendedWPFToolkitSolution/Xceed.Wpf.Toolkit.sln
index 778d85af..090591fa 100644
--- a/ExtendedWPFToolkitSolution/Xceed.Wpf.Toolkit.sln
+++ b/ExtendedWPFToolkitSolution/Xceed.Wpf.Toolkit.sln
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xceed.Wpf.Toolkit.LiveExplorer", "Src\Xceed.Wpf.Toolkit.LiveExplorer\Xceed.Wpf.Toolkit.LiveExplorer.csproj", "{5E7DC9C8-3E27-400C-B84C-29FF9E710CB3}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xceed.Wpf.Toolkit", "Src\Xceed.Wpf.Toolkit\Xceed.Wpf.Toolkit.csproj", "{72E591D6-8F83-4D8C-8F67-9C325E623234}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xceed.Wpf.Toolkit", "Src\Xceed.Wpf.Toolkit\Xceed.Wpf.Toolkit.csproj", "{72E591D6-8F83-4D8C-8F67-9C325E623234}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xceed.Wpf.DataGrid", "Src\Xceed.Wpf.DataGrid\Xceed.Wpf.DataGrid.csproj", "{63648392-6CE9-4A60-96D4-F9FD718D29B0}"
EndProject