Question installing upgrade 2012.1.326.35

11 posts, 0 answers
  1. Oliver
    Oliver avatar
    263 posts
    Member since:
    Feb 2011

    Posted 02 May 2012 Link to this post

    Hi,

    actually with my VS2008 I use V2011.3.1220.35 and I'm trying to upgrade to V2012.1.326.35 and I have some questions. Actually
    my "C:\Program Files (x86)\Telerik\RadControls for WPF Q3 2011 SP1" folder contain the following folders:

    Binaries
    Demos
    LicenseAgreements
    Themes
    VSExtensions

    and the new folder ("C:\Users\agosselin\AppData\Roaming\Telerik\Updates\RadControls_for_WPF_2012_1_0326_Dev_hotfix") created by Telerik download process contain the following folders:

    Binaries
    Binaries.NoXaml
    LicenseAgreements
    Themes.Implicit

    the folders structure are not the same!!! I would like to know what should I do and consider to upgrade my current version of Telerik???

    PS: In our development environment, we have a specific folder containing each Telerik versions regarding the one we use with the project we work on.

    Thank's
  2. Chavdar Dimitrov
    Admin
    Chavdar Dimitrov avatar
    104 posts

    Posted 03 May 2012 Link to this post

    Hello Oliver,

    Thank you for contacting us.

    With Q1 2012 SP1 we introduced new set of assemblies (Binaries.NoXaml), i.e. assemblies with absolutely no XAML included so you can add manually only needed resources for your application (Themes.Implicit). The main goal is assembly size optimization.

    You can read more about this in the following articles:
    http://www.telerik.com/help/wpf/styling-apperance-implicit-styles-overview.html
    http://www.telerik.com/community/forums/wpf/gridview/radcontrols-for-wpf-q1-2012-sp1-binaries-noxaml.aspx

    The other two folders Themes, VSExtensions and Demos are not provided in the hotfixes by design, i.e. the Visual Studio extensions are installed only by our *.msi installers (you can keep them up-to-date through the Visual Studio Extension manager) and the demos are removed in order to optimize the hotfix package size (all examples are available on our web site as separate packages).

    The Binaries folder (and its content) has no changes.

    I hope this will help. Please, let me know if you have any further questions.

    Kind regards,
    Chavdar,
    the Telerik team

    Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

  3. UI for WPF is Visual Studio 2017 Ready
  4. Oliver
    Oliver avatar
    263 posts
    Member since:
    Feb 2011

    Posted 03 May 2012 Link to this post

    Hi Chavdar,

    in other word, I just have to replace existing folders by the new one (Binaries, LicenseAgreements) and add the news folder (Binaries.NoXaml and Themes.Implicit)?

    I also remark that in my actual Binaries folder, there is a Telerik.Windows.Controls.Scheduler.dll file and this file seem's to be no longer present in the new folder, is this normal?

    Thank's
  5. Chavdar Dimitrov
    Admin
    Chavdar Dimitrov avatar
    104 posts

    Posted 03 May 2012 Link to this post

    Hi Oliver,

    Just a notice - the Themes folder is not provided in the hotfix. If you plan to use anything from this folder, you should use the full *.msi installer in order to get it. Otherwise, you can do exactly what you mentioned.

    Regarding the Telerik.Windows.Controls.Scheduler.dll assembly - it's deprecated and replaced by Telerik.Windows.Controls.ScheduleView.dll.

    Let me know if I can be of any further assistance.

    All the best,
    Chavdar,
    the Telerik team

    Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

  6. Oliver
    Oliver avatar
    263 posts
    Member since:
    Feb 2011

    Posted 03 May 2012 Link to this post

    I Chavdar,

    since I upgrade to the lastest version of Telerik, my solution refuse to complie :( In my solution, I have a persistence class and I have a lot of error during the compilation (just lokk at the Telerik one):

    PS: I had to switch back to my previous version of Telerik until a solution was found. Since that, all my grid view localization still in english. My WIndows 7 is in french and before I tried to upgrade Telerik, my localization was ok.

    Error 2 Unable to copy file "obj\Debug\Localisation.dll" to "bin\Debug\Localisation.dll". The process cannot access the file 'bin\Debug\Localisation.dll' because it is being used by another process. Localisation
    Error 5 'Telerik.Windows.Data.OperatorValueFilterDescriptorBase' ne contient pas une définition pour 'Member' et aucune méthode d'extension 'Member' acceptant un premier argument de type 'Telerik.Windows.Data.OperatorValueFilterDescriptorBase' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 554 74 ClientHelper
    Error 6 'Telerik.Windows.Data.OperatorValueFilterDescriptorBase' ne contient pas une définition pour 'Member' et aucune méthode d'extension 'Member' acceptant un premier argument de type 'Telerik.Windows.Data.OperatorValueFilterDescriptorBase' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 562 74 ClientHelper
    Error 7 'Telerik.Windows.Controls.GridViewColumn' ne contient pas une définition pour 'DataMemberBinding' et aucune méthode d'extension 'DataMemberBinding' acceptant un premier argument de type 'Telerik.Windows.Controls.GridViewColumn' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 581 78 ClientHelper
    Error 8 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' est inaccessible en raison de son niveau de protection D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 646 25 ClientHelper
    Error 9 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' est inaccessible en raison de son niveau de protection D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 646 58 ClientHelper
    Error 10 Impossible de créer une instance de la classe abstraite ou de l'interface 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 646 54 ClientHelper
    Error 11 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' ne contient pas une définition pour 'FieldFilter' et aucune méthode d'extension 'FieldFilter' acceptant un premier argument de type 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 650 33 ClientHelper
    Error 12 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' ne contient pas une définition pour 'FieldFilter' et aucune méthode d'extension 'FieldFilter' acceptant un premier argument de type 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 651 33 ClientHelper
    Error 13 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' ne contient pas une définition pour 'FieldFilter' et aucune méthode d'extension 'FieldFilter' acceptant un premier argument de type 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 652 33 ClientHelper
    Error 14 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' ne contient pas une définition pour 'FieldFilter' et aucune méthode d'extension 'FieldFilter' acceptant un premier argument de type 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 657 33 ClientHelper
    Error 15 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' ne contient pas une définition pour 'FieldFilter' et aucune méthode d'extension 'FieldFilter' acceptant un premier argument de type 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 658 33 ClientHelper
    Error 16 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' ne contient pas une définition pour 'FieldFilter' et aucune méthode d'extension 'FieldFilter' acceptant un premier argument de type 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 659 33 ClientHelper
    Error 17 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' ne contient pas une définition pour 'DistinctFilter' et aucune méthode d'extension 'DistinctFilter' acceptant un premier argument de type 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 668 33 ClientHelper
    Error 18 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' ne contient pas une définition pour 'Column' et aucune méthode d'extension 'Column' acceptant un premier argument de type 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' n'a été trouvée (une directive using ou une référence d'assembly est-elle manquante ?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 670 52 ClientHelper
    Error 19 Unknown build error, 'Could not load file or assembly 'file:///D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\obj\Debug\ClientHelper.dll' or one of its dependencies. Le fichier spécifié est introuvable. Line 5 Position 71.'  D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\AddressControl.xaml 5 71 ClientHelper
    Error 20 Unknown build error, 'Could not load file or assembly 'file:///D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\obj\Debug\ClientHelper.dll' or one of its dependencies. Le fichier spécifié est introuvable. Line 6 Position 92.'  D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\LoggedTransactionsViewer.xaml 6 92 ClientHelper
    Error 21 Unknown build error, 'Could not load file or assembly 'file:///D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\obj\Debug\ClientHelper.dll' or one of its dependencies. Le fichier spécifié est introuvable. Line 7 Position 5.'  D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\DatesSelectorForm.xaml 7 5 ClientHelper
    Error 22 The tag 'DocTypeBorderColorConverter' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication'. Line 17 Position 14. D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\InterDependencyImagesControl.xaml 17 14 ClientHelper
    Error 23 Unknown build error, 'Could not load file or assembly 'file:///D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\obj\Debug\ClientHelper.dll' or one of its dependencies. Le fichier spécifié est introuvable. Line 6 Position 30.'  D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\LockDialogWPF.xaml 6 30 ClientHelper
    Error 24 Unknown build error, 'Could not load file or assembly 'file:///D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\obj\Debug\ClientHelper.dll' or one of its dependencies. Le fichier spécifié est introuvable. Line 6 Position 112.'  D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PatientFileForm.xaml 6 112 ClientHelper
    Error 25 Unknown build error, 'Could not load file or assembly 'file:///D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\obj\Debug\ClientHelper.dll' or one of its dependencies. Le fichier spécifié est introuvable. Line 6 Position 5.'  D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PhonesControl.xaml 6 5 ClientHelper
    Error 26 Metadata file 'D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\bin\Debug\ClientHelper.dll' could not be found Neuron
    Error 27 The tag 'WPFonMFCControl' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=ClientHelper'. Line 1 Position 25. D:\Developpement\GestX.Courant\RisGC\Client\VisitBillingDetails\BillingDetails.xaml 1 25 VisitBillingDetails
    Error 28 The tag 'WPFonMFCControl' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=ClientHelper'. Line 1 Position 25. D:\Developpement\GestX.Courant\RisGC\Client\ReportControl\ReportControl.xaml 1 25 ReportControl
    Error 29 Assembly 'ClientHelper' was not found. Verify that you are not missing an assembly reference. Also, verify that your project and all referenced assemblies have been built. D:\Developpement\GestX.Courant\RisGC\Client\VisitBillingDetails\BillingDetails.xaml 3 18 VisitBillingDetails
    Error 30 The type 'Helper:WPFonMFCControl' was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built. D:\Developpement\GestX.Courant\RisGC\Client\VisitBillingDetails\BillingDetails.xaml 1 2 VisitBillingDetails
    Error 31 The attachable property 'Resources' was not found in type 'UserControl'. D:\Developpement\GestX.Courant\RisGC\Client\VisitBillingDetails\BillingDetails.xaml 5 6 VisitBillingDetails
    Error 32 Metadata file 'D:\Developpement\GestX.Courant\RisGC\bin\Debug\Neuron30\Neuron.exe' could not be found DictationModule
    Error 33 Metadata file 'D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\bin\Debug\ClientHelper.dll' could not be found DictationModule
    Error 34 Le fichier de métadonnées 'D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\bin\Debug\ClientHelper.dll' est introuvable D:\Developpement\GestX.Courant\RisGC\Client\NeuronWPF\CSC NeuronWPF
    Error 35 Unknown build error, 'Could not load file or assembly 'file:///D:\Developpement\GestX.Courant\RisGC\Client\NeuronWPF\obj\Debug\NeuronWPF.exe' or one of its dependencies. Le fichier spécifié est introuvable. Line 6 Position 5.'  D:\Developpement\GestX.Courant\RisGC\Client\NeuronWPF\InternalLoginWPF.xaml 6 5 NeuronWPF
    Error 36 Unknown build error, 'Could not load file or assembly 'file:///D:\Developpement\GestX.Courant\RisGC\Client\NeuronWPF\obj\Debug\NeuronWPF.exe' or one of its dependencies. Le fichier spécifié est introuvable. Line 6 Position 5.'  D:\Developpement\GestX.Courant\RisGC\Client\NeuronWPF\Neuron.xaml 6 5 NeuronWPF
    Error 37 The tag 'StringToResource' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=ClientHelper'. Line 17 Position 14. D:\Developpement\GestX.Courant\RisGC\Client\MonitorModule\ExportEdit.xaml 17 14 MonitorModule
    Error 38 The tag 'LetterFormatWidth' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=ClientHelper'. Line 22 Position 14. D:\Developpement\GestX.Courant\RisGC\Client\DictationModuleWPF\DictationForm.xaml 22 14 DictationModuleWPF
    Error 39 The tag 'HospitalDate' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=ClientHelper'. Line 17 Position 14. D:\Developpement\GestX.Courant\RisGC\Client\DictationModuleWPF\DictationList.xaml 17 14 DictationModuleWPF
    Error 40 fatal error C1192: #using failed on 'd:\Developpement\GestX.Courant\RisGC\Client\VisitBillingDetails\bin\Debug\VisitBillingDetails.dll' d:\Developpement\GestX.Courant\RisGC\GestXTree\StdAfxCLI.cpp 1 GestX
    Error 41 error BK1506 : cannot open file '.\Debug\AdrDestArray.sbr': No such file or directory BSCMAKE GestX
    Error 42 Metadata file 'D:\Developpement\GestX.Courant\RisGC\bin\Debug\Neuron30\Neuron.exe' could not be found DynamicListModule
    Error 43 Metadata file 'D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\bin\Debug\ClientHelper.dll' could not be found DynamicListModule
    Error 46 The tag 'BoolToVisibility' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=ClientHelper'. Line 23 Position 14. D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml 23 14 BillingModule
    Error 47 The tag 'HospitalDate' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=ClientHelper'. Line 11 Position 14. D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml 11 14 BillingModule
    Error 48 The tag 'HospitalDate' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=Clienthelper'. Line 10 Position 14. D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml 10 14 BillingModule
    Error 49 The tag 'CustomGridView' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=ClientHelper'. Line 63 Position 14. D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\CancelableBatches.xaml 63 14 BillingModule
    Error 50 The tag 'HospitalTime' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=ClientHelper'. Line 22 Position 14. D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\AddPaymentForm.xaml 22 14 BillingModule
    Error 51 The tag 'IsSelected' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=NeuronWPF'. Line 8 Position 14. D:\Developpement\GestX.Courant\RisGC\Client\ExportationModule\ExportationControl.xaml 8 14 ExportationModule
    Error 52 The tag 'ListToIndex' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=ClientHelper'. Line 13 Position 14. D:\Developpement\GestX.Courant\RisGC\Client\ExportModule\AutoSend.xaml 13 14 ExportModule
    Error 53 The tag 'ListToIndex' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=ClientHelper'. Line 15 Position 14. D:\Developpement\GestX.Courant\RisGC\Client\ExportModule\Condition.xaml 15 14 ExportModule
    Error 54 The tag 'ListToIndex' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=ClientHelper'. Line 14 Position 14. D:\Developpement\GestX.Courant\RisGC\Client\ExportModule\Destination.xaml 14 14 ExportModule
    Error 55 The tag 'RequiredField' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=ClientHelper'. Line 42 Position 30. D:\Developpement\GestX.Courant\RisGC\Client\ExportModule\DicomServer.xaml 42 30 ExportModule
    Error 56 The tag 'IsSelected' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=ClientHelper'. Line 12 Position 14. D:\Developpement\GestX.Courant\RisGC\Client\ExportModule\ExportationControl.xaml 12 14 ExportModule
    Error 57 The tag 'ListToIndex' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=ClientHelper'. Line 12 Position 14. D:\Developpement\GestX.Courant\RisGC\Client\ExportModule\Function.xaml 12 14 ExportModule
    Error 58 The tag 'RequiredField' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=ClientHelper'. Line 36 Position 26. D:\Developpement\GestX.Courant\RisGC\Client\ExportModule\LocalDicom.xaml 36 26 ExportModule
    Error 59 The tag 'ListToIndex' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=ClientHelper'. Line 12 Position 14. D:\Developpement\GestX.Courant\RisGC\Client\ExportModule\Scheduler.xaml 12 14 ExportModule
    Error 60 The tag 'DocTypeBorderColorConverter' does not exist in XML namespace 'clr-namespace:com.christiegrp.Neuron.ClientApplication;assembly=ClientHelper'. Line 26 Position 8. D:\Developpement\GestX.Courant\RisGC\Client\SignatureModule\SignatureForm.xaml 26 8 SignatureModule
    Message 68 Could not find schema information for the element 'system.serviceModel'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 33 4 Miscellaneous Files
    Message 69 Could not find schema information for the element 'services'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 34 6 Miscellaneous Files
    Message 70 Could not find schema information for the element 'service'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 35 8 Miscellaneous Files
    Message 71 Could not find schema information for the attribute 'name'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 35 16 Miscellaneous Files
    Message 72 Could not find schema information for the attribute 'behaviorConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 35 70 Miscellaneous Files
    Message 73 Could not find schema information for the element 'host'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 36 10 Miscellaneous Files
    Message 74 Could not find schema information for the element 'baseAddresses'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 37 12 Miscellaneous Files
    Message 75 Could not find schema information for the element 'add'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 38 14 Miscellaneous Files
    Message 76 Could not find schema information for the attribute 'baseAddress'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 38 18 Miscellaneous Files
    Message 77 Could not find schema information for the element 'endpoint'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 41 10 Miscellaneous Files
    Message 78 Could not find schema information for the attribute 'address'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 41 19 Miscellaneous Files
    Message 79 Could not find schema information for the attribute 'binding'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 41 54 Miscellaneous Files
    Message 80 Could not find schema information for the attribute 'bindingConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 41 78 Miscellaneous Files
    Message 81 Could not find schema information for the attribute 'contract'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 41 111 Miscellaneous Files
    Message 82 Could not find schema information for the attribute 'behaviorConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 41 170 Miscellaneous Files
    Message 83 Could not find schema information for the element 'endpoint'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 42 10 Miscellaneous Files
    Message 84 Could not find schema information for the attribute 'address'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 42 19 Miscellaneous Files
    Message 85 Could not find schema information for the attribute 'binding'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 42 39 Miscellaneous Files
    Message 86 Could not find schema information for the attribute 'bindingConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 42 66 Miscellaneous Files
    Message 87 Could not find schema information for the attribute 'contract'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 42 103 Miscellaneous Files
    Message 88 Could not find schema information for the attribute 'behaviorConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 42 162 Miscellaneous Files
    Message 89 Could not find schema information for the element 'endpoint'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 43 10 Miscellaneous Files
    Message 90 Could not find schema information for the attribute 'contract'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 43 19 Miscellaneous Files
    Message 91 Could not find schema information for the attribute 'binding'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 43 48 Miscellaneous Files
    Message 92 Could not find schema information for the attribute 'address'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 43 73 Miscellaneous Files
    Message 93 Could not find schema information for the element 'service'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 45 8 Miscellaneous Files
    Message 94 Could not find schema information for the attribute 'name'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 45 16 Miscellaneous Files
    Message 95 Could not find schema information for the attribute 'behaviorConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 45 74 Miscellaneous Files
    Message 96 Could not find schema information for the element 'host'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 46 10 Miscellaneous Files
    Message 97 Could not find schema information for the element 'baseAddresses'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 47 12 Miscellaneous Files
    Message 98 Could not find schema information for the element 'add'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 48 14 Miscellaneous Files
    Message 99 Could not find schema information for the attribute 'baseAddress'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 48 18 Miscellaneous Files
    Message 100 Could not find schema information for the element 'endpoint'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 51 10 Miscellaneous Files
    Message 101 Could not find schema information for the attribute 'address'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 51 19 Miscellaneous Files
    Message 102 Could not find schema information for the attribute 'binding'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 51 54 Miscellaneous Files
    Message 103 Could not find schema information for the attribute 'bindingConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 51 78 Miscellaneous Files
    Message 104 Could not find schema information for the attribute 'contract'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 51 111 Miscellaneous Files
    Message 105 Could not find schema information for the attribute 'behaviorConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 51 174 Miscellaneous Files
    Message 106 Could not find schema information for the element 'endpoint'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 52 10 Miscellaneous Files
    Message 107 Could not find schema information for the attribute 'address'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 52 19 Miscellaneous Files
    Message 108 Could not find schema information for the attribute 'binding'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 52 43 Miscellaneous Files
    Message 109 Could not find schema information for the attribute 'bindingConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 52 70 Miscellaneous Files
    Message 110 Could not find schema information for the attribute 'contract'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 52 107 Miscellaneous Files
    Message 111 Could not find schema information for the attribute 'behaviorConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 52 170 Miscellaneous Files
    Message 112 Could not find schema information for the element 'endpoint'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 53 10 Miscellaneous Files
    Message 113 Could not find schema information for the attribute 'contract'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 53 19 Miscellaneous Files
    Message 114 Could not find schema information for the attribute 'binding'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 53 48 Miscellaneous Files
    Message 115 Could not find schema information for the attribute 'address'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 53 73 Miscellaneous Files
    Message 116 Could not find schema information for the element 'service'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 55 8 Miscellaneous Files
    Message 117 Could not find schema information for the attribute 'name'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 55 16 Miscellaneous Files
    Message 118 Could not find schema information for the attribute 'behaviorConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 55 67 Miscellaneous Files
    Message 119 Could not find schema information for the element 'host'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 56 10 Miscellaneous Files
    Message 120 Could not find schema information for the element 'baseAddresses'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 57 12 Miscellaneous Files
    Message 121 Could not find schema information for the element 'add'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 58 14 Miscellaneous Files
    Message 122 Could not find schema information for the attribute 'baseAddress'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 58 18 Miscellaneous Files
    Message 123 Could not find schema information for the element 'endpoint'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 61 10 Miscellaneous Files
    Message 124 Could not find schema information for the attribute 'address'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 61 19 Miscellaneous Files
    Message 125 Could not find schema information for the attribute 'binding'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 61 54 Miscellaneous Files
    Message 126 Could not find schema information for the attribute 'bindingConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 61 78 Miscellaneous Files
    Message 127 Could not find schema information for the attribute 'contract'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 61 111 Miscellaneous Files
    Message 128 Could not find schema information for the attribute 'behaviorConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 61 167 Miscellaneous Files
    Message 129 Could not find schema information for the element 'endpoint'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 62 10 Miscellaneous Files
    Message 130 Could not find schema information for the attribute 'address'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 62 19 Miscellaneous Files
    Message 131 Could not find schema information for the attribute 'binding'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 62 36 Miscellaneous Files
    Message 132 Could not find schema information for the attribute 'bindingConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 62 63 Miscellaneous Files
    Message 133 Could not find schema information for the attribute 'contract'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 62 100 Miscellaneous Files
    Message 134 Could not find schema information for the attribute 'behaviorConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 62 156 Miscellaneous Files
    Message 135 Could not find schema information for the element 'endpoint'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 63 10 Miscellaneous Files
    Message 136 Could not find schema information for the attribute 'contract'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 63 19 Miscellaneous Files
    Message 137 Could not find schema information for the attribute 'binding'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 63 48 Miscellaneous Files
    Message 138 Could not find schema information for the attribute 'address'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 63 73 Miscellaneous Files
    Message 139 Could not find schema information for the element 'service'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 65 8 Miscellaneous Files
    Message 140 Could not find schema information for the attribute 'name'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 65 16 Miscellaneous Files
    Message 141 Could not find schema information for the attribute 'behaviorConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 65 68 Miscellaneous Files
    Message 142 Could not find schema information for the element 'host'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 66 10 Miscellaneous Files
    Message 143 Could not find schema information for the element 'baseAddresses'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 67 12 Miscellaneous Files
    Message 144 Could not find schema information for the element 'add'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 68 14 Miscellaneous Files
    Message 145 Could not find schema information for the attribute 'baseAddress'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 68 18 Miscellaneous Files
    Message 146 Could not find schema information for the element 'endpoint'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 71 10 Miscellaneous Files
    Message 147 Could not find schema information for the attribute 'address'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 71 19 Miscellaneous Files
    Message 148 Could not find schema information for the attribute 'binding'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 71 54 Miscellaneous Files
    Message 149 Could not find schema information for the attribute 'bindingConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 71 78 Miscellaneous Files
    Message 150 Could not find schema information for the attribute 'contract'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 71 111 Miscellaneous Files
    Message 151 Could not find schema information for the attribute 'behaviorConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 71 168 Miscellaneous Files
    Message 152 Could not find schema information for the element 'endpoint'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 72 10 Miscellaneous Files
    Message 153 Could not find schema information for the attribute 'address'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 72 19 Miscellaneous Files
    Message 154 Could not find schema information for the attribute 'binding'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 72 37 Miscellaneous Files
    Message 155 Could not find schema information for the attribute 'bindingConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 72 64 Miscellaneous Files
    Message 156 Could not find schema information for the attribute 'contract'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 72 101 Miscellaneous Files
    Message 157 Could not find schema information for the attribute 'behaviorConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 72 158 Miscellaneous Files
    Message 158 Could not find schema information for the element 'endpoint'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 73 10 Miscellaneous Files
    Message 159 Could not find schema information for the attribute 'contract'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 73 19 Miscellaneous Files
    Message 160 Could not find schema information for the attribute 'binding'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 73 48 Miscellaneous Files
    Message 161 Could not find schema information for the attribute 'address'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 73 73 Miscellaneous Files
    Message 162 Could not find schema information for the element 'service'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 75 8 Miscellaneous Files
    Message 163 Could not find schema information for the attribute 'name'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 75 16 Miscellaneous Files
    Message 164 Could not find schema information for the attribute 'behaviorConfiguration'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 75 69 Miscellaneous Files
    Message 165 Could not find schema information for the element 'host'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 76 10 Miscellaneous Files
    Message 166 Could not find schema information for the element 'baseAddresses'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 77 12 Miscellaneous Files
    Message 167 Could not find schema information for the element 'add'. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 78 14 Miscellaneous Files
    Message 170 The maximum number of errors or warnings has been reached. D:\Developpement\GestX.Courant\RisGC\bin\Debug\BLService\BLService.exe.config 289 17 Miscellaneous Files
    Error 171 The name 'InitializeComponent' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 38 13 BillingModule
    Error 172 The name 'gvRelatedBills' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 681 52 BillingModule
    Error 173 The name 'gvTransactions' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 740 52 BillingModule
    Error 174 The name 'gvErrorsReport' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 797 52 BillingModule
    Error 175 The name 'gvStatementOfAccount' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 854 52 BillingModule
    Error 176 The name 'gvErrorsReport' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 873 25 BillingModule
    Error 177 The name 'gvErrorsReport' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 875 25 BillingModule
    Error 178 The name 'gvErrorsReport' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 877 73 BillingModule
    Error 179 The name 'gvRelatedBills' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 880 25 BillingModule
    Error 180 The name 'gvRelatedBills' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 882 25 BillingModule
    Error 181 The name 'gvRelatedBills' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 884 71 BillingModule
    Error 182 The name 'gvStatementOfAccount' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 887 25 BillingModule
    Error 183 The name 'gvStatementOfAccount' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 889 25 BillingModule
    Error 184 The name 'gvStatementOfAccount' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 891 79 BillingModule
    Error 185 The name 'gvTransactions' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 894 25 BillingModule
    Error 186 The name 'gvTransactions' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 896 25 BillingModule
    Error 187 The name 'gvTransactions' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 898 73 BillingModule
    Error 188 The name 'btnRebill' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 940 13 BillingModule
    Error 189 The name 'btnConciliate' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 941 13 BillingModule
    Error 190 The name 'btnRebill' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 941 39 BillingModule
    Error 191 The name 'btnPrevious' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 942 13 BillingModule
    Error 192 The name 'btnNext' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingDetails.xaml.cs 943 13 BillingModule
    Error 193 The name 'InitializeComponent' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 72 13 BillingModule
    Error 194 The name 'Title1' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 78 17 BillingModule
    Error 195 The name 'Title2' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 79 17 BillingModule
    Error 196 The name 'radBusyIndicator' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 118 122 BillingModule
    Error 197 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 164 17 BillingModule
    Error 198 The name 'radBusyIndicator' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 168 21 BillingModule
    Error 199 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 264 33 BillingModule
    Error 200 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 290 17 BillingModule
    Error 201 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 297 51 BillingModule
    Error 202 The name 'radBusyIndicator' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 308 21 BillingModule
    Error 203 'com.christiegrp.Neuron.ClientApplication.BillingInfosGrid' does not contain a definition for 'radGridViewList' and no extension method 'radGridViewList' accepting a first argument of type 'com.christiegrp.Neuron.ClientApplication.BillingInfosGrid' could be found (are you missing a using directive or an assembly reference?) D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 477 67 BillingModule
    Error 204 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 494 71 BillingModule
    Error 205 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 507 71 BillingModule
    Error 206 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 529 63 BillingModule
    Error 207 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 530 67 BillingModule
    Error 208 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 552 65 BillingModule
    Error 209 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 553 67 BillingModule
    Error 210 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 577 81 BillingModule
    Error 211 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 595 48 BillingModule
    Error 212 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 599 48 BillingModule
    Error 213 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 662 43 BillingModule
    Error 214 The name 'radBusyIndicator' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 844 21 BillingModule
    Error 215 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 856 48 BillingModule
    Error 216 The name 'radBusyIndicator' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 872 21 BillingModule
    Error 217 The name 'radBusyIndicator' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 930 21 BillingModule
    Error 218 The name 'radBusyIndicator' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 961 13 BillingModule
    Error 219 The name 'radButtonTransmitBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 967 28 BillingModule
    Error 220 The name 'radButtonReception' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 968 28 BillingModule
    Error 221 The name 'radButtonMergeFiles' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 969 28 BillingModule
    Error 222 The name 'radButtonVisit' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 970 28 BillingModule
    Error 223 The name 'radButtonPatientFile' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 971 28 BillingModule
    Error 224 The name 'radButtonPrepareBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 975 28 BillingModule
    Error 225 The name 'radButtonCancelBatch' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 976 28 BillingModule
    Error 226 The name 'radButtonTransmitBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 977 28 BillingModule
    Error 227 The name 'radButtonReception' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 978 28 BillingModule
    Error 228 The name 'radButtonMergeFiles' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 979 28 BillingModule
    Error 229 The name 'radButtonVisit' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 980 28 BillingModule
    Error 230 The name 'radButtonPatientFile' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 981 28 BillingModule
    Error 231 The name 'radButtonCancelConciliation' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 995 28 BillingModule
    Error 232 The name 'radButtonExport' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 1011 13 BillingModule
    Error 233 The name 'mnuiExport' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 1011 41 BillingModule
    Error 234 The name 'txtDateRanges' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 1016 17 BillingModule
    Error 235 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 1030 13 BillingModule
    Error 236 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 1060 29 BillingModule
    Error 237 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 1064 29 BillingModule
    Error 238 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 1067 52 BillingModule
    Error 239 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 1094 17 BillingModule
    Error 240 The name 'radBusyIndicator' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 1101 17 BillingModule
    Error 241 The name 'radGridViewList' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 1118 43 BillingModule
    Error 242 The name 'Title2' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 1207 21 BillingModule
    Error 243 The name 'Title2' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingInfosGrid.xaml.cs 1211 21 BillingModule
    Error 244 'Telerik.Windows.Data.OperatorValueFilterDescriptorBase' does not contain a definition for 'Member' and no extension method 'Member' accepting a first argument of type 'Telerik.Windows.Data.OperatorValueFilterDescriptorBase' could be found (are you missing a using directive or an assembly reference?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 554 74 ClientHelper
    Error 245 'Telerik.Windows.Data.OperatorValueFilterDescriptorBase' does not contain a definition for 'Member' and no extension method 'Member' accepting a first argument of type 'Telerik.Windows.Data.OperatorValueFilterDescriptorBase' could be found (are you missing a using directive or an assembly reference?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 562 74 ClientHelper
    Error 246 'Telerik.Windows.Controls.GridViewColumn' does not contain a definition for 'DataMemberBinding' and no extension method 'DataMemberBinding' accepting a first argument of type 'Telerik.Windows.Controls.GridViewColumn' could be found (are you missing a using directive or an assembly reference?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 581 78 ClientHelper
    Error 247 The type or namespace name 'ColumnFilterDescriptor' could not be found (are you missing a using directive or an assembly reference?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 646 25 ClientHelper
    Error 248 The type or namespace name 'ColumnFilterDescriptor' could not be found (are you missing a using directive or an assembly reference?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 646 58 ClientHelper
    Error 249 The name 'InitializeComponent' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 49 13 BillingModule
    Error 250 The name 'Title1' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 51 13 BillingModule
    Error 251 The name 'Title2' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 52 13 BillingModule
    Error 252 The name 'textBlockRebill' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 110 17 BillingModule
    Error 253 The name 'radBusyIndicator' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 113 13 BillingModule
    Error 254 The name 'radButtonExport' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 118 13 BillingModule
    Error 255 The name 'mnuiExport' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 118 41 BillingModule
    Error 256 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 131 13 BillingModule
    Error 257 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 159 25 BillingModule
    Error 258 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 160 52 BillingModule
    Error 259 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 187 17 BillingModule
    Error 260 The name 'radBusyIndicator' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 195 17 BillingModule
    Error 261 The name 'radBusyIndicator' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 350 21 BillingModule
    Error 262 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 362 48 BillingModule
    Error 263 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 438 29 BillingModule
    Error 264 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 440 59 BillingModule
    Error 265 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 513 51 BillingModule
    Error 266 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 516 34 BillingModule
    Error 267 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 559 47 BillingModule
    Error 268 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 564 30 BillingModule
    Error 269 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 565 17 BillingModule
    Error 270 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 566 17 BillingModule
    Error 271 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 567 17 BillingModule
    Error 272 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 608 84 BillingModule
    Error 273 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 608 120 BillingModule
    Error 274 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 613 47 BillingModule
    Error 275 The name 'btnAddPayment' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 623 17 BillingModule
    Error 276 The name 'btnAddPayment' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 627 17 BillingModule
    Error 277 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 639 43 BillingModule
    Error 278 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 655 17 BillingModule
    Error 279 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 657 47 BillingModule
    Error 280 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 675 17 BillingModule
    Error 281 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 677 37 BillingModule
    Error 282 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 693 43 BillingModule
    Error 283 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 847 33 BillingModule
    Error 284 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 912 71 BillingModule
    Error 285 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 925 71 BillingModule
    Error 286 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 947 63 BillingModule
    Error 287 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 948 67 BillingModule
    Error 288 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 970 65 BillingModule
    Error 289 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 971 67 BillingModule
    Error 290 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 1115 81 BillingModule
    Error 291 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 1135 21 BillingModule
    Error 292 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 1135 64 BillingModule
    Error 293 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 1141 48 BillingModule
    Error 294 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 1151 21 BillingModule
    Error 295 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 1151 64 BillingModule
    Error 296 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 1157 48 BillingModule
    Error 297 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 1165 21 BillingModule
    Error 298 The name 'radGridViewBilling' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 1165 64 BillingModule
    Error 299 The name 'btnConciliate' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 1175 33 BillingModule
    Error 300 The name 'btnRebill' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 1179 33 BillingModule
    Error 301 'com.christiegrp.Neuron.ClientApplication.BillingGrid' does not contain a definition for 'radGridViewBilling' and no extension method 'radGridViewBilling' accepting a first argument of type 'com.christiegrp.Neuron.ClientApplication.BillingGrid' could be found (are you missing a using directive or an assembly reference?) D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 1190 63 BillingModule
    Error 302 The name 'Title2' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 1210 21 BillingModule
    Error 303 The name 'Title2' does not exist in the current context D:\Developpement\GestX.Courant\RisGC\Client\BillingModule\BillingGrid.xaml.cs 1214 21 BillingModule



    //====================================================================================
    // Author.......:
    // Creation date:
    // Fonction.....:
    //====================================================================================
    // Date       Prg  TT#    Details
    // ---------- ---- ------ ------------------------------------------------------------
    //
    //====================================================================================

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.IO;
    using System.Linq;
    using System.Reflection;
    using System.Text;

    using Telerik.Windows.Controls;
    using Telerik.Windows.Controls.GridView;
    using Telerik.Windows.Data;
    using Telerik.Windows.Documents.FormatProviders.Txt;
    using Telerik.Windows.Persistence;
    using Telerik.Windows.Persistence.Services;
    using Telerik.Windows.Persistence.Storage;
    using Telerik.Windows.Zip;

    using com.christiegrp.Neuron.Client;
    using com.ChristieGrp.Infrastructure;

    namespace com.christiegrp.Neuron.ClientApplication
    {
        static public class PersistenceStorage
        {       
            #region Public methods.
            /// <summary>
            /// Set a StorageId before Loading/Saving a control and removing it's StorageId after the action was taken.
            /// The file location is "$APPDATA\IsolatedStorage\..."
            /// </summary>
            /// <param name="pPersistenceAction">Load/Save</param>
            /// <param name="pObjectToPersist">Object to persist.</param>
            /// <param name="pStorageId">StorageId of the object to persist. Null mean that a custom StorageId will be use.</param>
            /// <param name="pErrorMessage">Error received during the persistence.</param>
            /// <returns>true if successfull otherwise false</returns>
            static public bool Persist(PersistenceAction pPersistenceAction, System.Windows.DependencyObject pObjectToPersist, string pStorageId, out string pErrorMessage)
            {           
                bool result = false;
                pErrorMessage = string.Empty;

                if (pObjectToPersist != null)
                {
                    // Validate if we need to generate a custom StorageId.
                    if (string.IsNullOrEmpty(pStorageId))
                    {
                        pStorageId = GetCustomStorageId(pObjectToPersist);
                    }

                    try
                    {
                        PersistenceManager.SetStorageId(pObjectToPersist, pStorageId);
                        result = Persist(pPersistenceAction, out pErrorMessage);
                    }
                    finally
                    {
                        pObjectToPersist.ClearValue(PersistenceManager.StorageIdProperty);
                    }
                }

                return result;
            }

            /// <summary>
            /// Load/Save all controls that contain "telerik:PersistenceManager.StorageId="..."
            /// The file location is "$APPDATA\IsolatedStorage\..."
            /// </summary>
            /// <param name="pPersistenceAction">Load/Save</param>
            /// <param name="pErrorMessage">Error received during the persistence.</param>
            /// <returns>true if successfull otherwise false</returns>
            static public bool Persist(PersistenceAction pPersistenceAction, out string pErrorMessage)
            {           
                pErrorMessage = string.Empty;
                PersistenceManager manager = new PersistenceManager();
                manager.PropertyPersisting += new Telerik.Windows.Persistence.Events.PropertyPersistingEventHandler(manager_PropertyPersisting);
                IsolatedStorageProvider storage = new IsolatedStorageProvider(manager);

                try
                {
                    try
                    {
                        if (pPersistenceAction == PersistenceAction.Load)
                        {
                            //storage.LoadFromStorage(); // TODO CHECK
                        }
                        else if (pPersistenceAction == PersistenceAction.Save)
                        {
                            //storage.SaveToStorage(); // TODO CHECK
                        }

                        return true;
                    }
                    catch (Exception ex)
                    {
                        GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                        tracingTool.Log(GclLogger.Level.Error, "PERST001", "Error occured during '{0}' file. Message: {1}", pPersistenceAction.ToString(), ex.ToString());
                        pErrorMessage = ex.Message;
                        return false;
                    }
                }
                finally
                {
                    manager.PropertyPersisting += new Telerik.Windows.Persistence.Events.PropertyPersistingEventHandler(manager_PropertyPersisting);
                }
            }

            /// <summary>
            /// Load/Save from/to stream object.
            /// </summary>
            /// <param name="pDataSource">If different from null, we persist load/save from/in database.</param>
            /// <param name="pObject">Object to load/save.</param>
            /// <param name="pStream">Stream that contain the serialized object. Object content is ignored if pDatabaseStorage is true.</param>
            /// <param name="pPersistenceAction">Load/Save</param>       
            /// <param name="pErrorMessage">Error received during the persistence.</param>
            /// <returns></returns>
            static public bool Persist(NeuronDataSource pDataSource, object pObject, ref Stream pStream, PersistenceAction pPersistenceAction, out string pErrorMessage)
            {
                // TODO: Compress/Uncompress the stream before save/load to/from database.

                mResult = true;
                pErrorMessage = string.Empty;
                PersistenceManager manager = new PersistenceManager();
                manager.PersistenceError += new Telerik.Windows.Persistence.Events.PersistenceErrorEventHandler(manager_PersistenceError);
                manager.PropertyPersisting += new Telerik.Windows.Persistence.Events.PropertyPersistingEventHandler(manager_PropertyPersisting);

                try
                {
                    if (pPersistenceAction == PersistenceAction.Load)
                    {
                        if (pObject != null && pStream != null)
                        {
                            pStream.Position = 0L; // TO CHECK
                            manager.Load(pObject, pStream); // TO CHECK
                        }
                        else
                        {
                            pErrorMessage = "pObject and/or pStream cannot be null.";
                            GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                            tracingTool.Log(GclLogger.Level.Error, "PERST005", "Error occured during '{0}' stream. Message: {1}", pPersistenceAction.ToString(), pErrorMessage);
                            mResult = false;
                        }
                    }
                    else if (pPersistenceAction == PersistenceAction.Save)
                    {
                        if (pObject != null)
                        {
                            pStream = manager.Save(pObject); // TO CHECK
                        }
                        else
                        {
                            pErrorMessage = "pObject cannot be null.";
                            GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                            tracingTool.Log(GclLogger.Level.Error, "PERST006", "Error occured during '{0}' stream. Message: {1}", pPersistenceAction.ToString(), pErrorMessage);
                            mResult = false;
                        }
                    }
                }
                catch (Exception ex)
                {
                    GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                    tracingTool.Log(GclLogger.Level.Error, "PERST002", "Error occured during '{0}' stream. Message: {1}", pPersistenceAction.ToString(), ex.Message.ToString());
                    pErrorMessage = ex.Message;
                    mResult = false;
                }
                finally
                {
                    manager.PersistenceError -= new Telerik.Windows.Persistence.Events.PersistenceErrorEventHandler(manager_PersistenceError);
                    manager.PropertyPersisting -= new Telerik.Windows.Persistence.Events.PropertyPersistingEventHandler(manager_PropertyPersisting);
                    pErrorMessage = mErrorMessage;
                }

                return mResult;
            }

            /// <summary>
            /// Deleting all persistence files.
            /// </summary>
            /// <param name="pErrorMessage">Error receiving during deleting files.</param>
            static public void DeleteAll(out string pErrorMessage)
            {
                pErrorMessage = string.Empty;
                IsolatedStorageProvider iso = new IsolatedStorageProvider();
                try
                {
                    iso.DeleteIsolatedStorageFiles();
                }
                catch (Exception ex)
                {
                    GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                    tracingTool.Log(GclLogger.Level.Error, "PERST007", "Error occured during deleting files. Message: {0}", ex.Message.ToString());
                    pErrorMessage = ex.Message;
                }
            }

            /// <summary>
            /// Generate a custom StorageId.
            /// </summary>
            /// <param name="pObjectToPersist"></param>
            /// <returns></returns>
            static public string GetCustomStorageId(System.Windows.DependencyObject pObjectToPersist)
            {
                string customStorageId = string.Empty;
               

                if (pObjectToPersist != null)
                {
                    Assembly assembly = pObjectToPersist.GetType().Assembly;
                    customStorageId = assembly.GetName().Name + "." + pObjectToPersist.GetType().Name;               
                }

                return customStorageId;
            }
            #endregion

            #region Private methods.
            /// <summary>
            ///
            /// </summary>
            /// <param name="input"></param>
            /// <param name="output"></param>
            private static void copyTo(Stream input, Stream output)
            {
                byte[] buffer = new byte[32768]; // Fairly arbitrary size
                int bytesRead;

                while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
                {
                    output.Write(buffer, 0, bytesRead);
                }
            }

            /// <summary>
            /// Uncompress a stream.
            /// </summary>
            /// <param name="pStreamIn"></param>
            /// <param name="pStreamOut"></param>
            /// <returns></returns>
            private static bool uncompressStream(MemoryStream pStreamIn, out Stream pStreamOut)
            {
                pStreamOut = null;
                try
                {   
                    //TODO: Uncompress stream
                    return true;
                }
                catch (Exception ex)
                {
                    GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                    tracingTool.Log(GclLogger.Level.Error, "PERST003", "{0}", ex.Message.ToString());
                    mErrorMessage = ex.Message;
                    return false;
                }
            }

            /// <summary>
            /// Compream a stream.
            /// </summary>
            /// <param name="pStreamIn"></param>
            /// <param name="pStreamOut"></param>
            /// <returns></returns>
            private static bool compressStream(ref Stream pStreamIn, out MemoryStream pStreamOut)
            {
                pStreamOut = null;
                try
                {
                    pStreamOut = new MemoryStream();
                    ZipPackage package = ZipPackage.Create(pStreamOut);
                    package.AddStream(pStreamIn, "WindowPersistedData");
                    pStreamIn.Position = 0L;
                    return true;
                }
                catch (Exception ex)
                {
                    GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                    tracingTool.Log(GclLogger.Level.Error, "PERST004", "{0}", ex.Message.ToString());
                    mErrorMessage = ex.Message;
                    return false;
                }
            }

            /// <summary>
            /// Event triggered when the stream persistence didn't worked.
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            static void manager_PersistenceError(object sender, Telerik.Windows.Persistence.Events.PersistenceErrorEventArgs e)
            {
                mErrorMessage = e.Exception.Message;
                mResult = false;
                throw new NotImplementedException();
            }

            /// <summary>
            /// This event is used to prevent any BroderBrush to have a transparent color when we persist an object.
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            static void manager_PropertyPersisting(object sender, Telerik.Windows.Persistence.Events.PersistingPropertyEventArgs e)
            {
                //Not needed since version 2011.3.1116.35 of Telerik
                //if (e.Name == "BorderBrush")
                //    e.Cancel = true;
            }
            #endregion

            #region Private declarations.
            /// <summary>
            /// Persist a streaming object into or from database.
            /// </summary>
            /// <param name="pAction"></param>
            /// <param name="pStream"></param>
            /// <returns></returns>
            static private Boolean databaseStorage(PersistenceAction pAction, ref MemoryStream pStream)
            {
                Boolean result = true;

                if (pAction == PersistenceAction.Load)
                {
                    throw new NotImplementedException();
                }
                else if (pAction == PersistenceAction.Save)
                {
                    throw new NotImplementedException();
                }
               
                return result;
            }
            #endregion

            #region Enumerators.
            public enum PersistenceAction { Load, Save }
            #endregion

            #region Private declarations.
            static private string mErrorMessage;
            static private bool mResult;
            #endregion
        }

        //====================================================================================
        //
        //====================================================================================
        public class DockingCustomPropertyProvider : ICustomPropertyProvider
        {
            public CustomPropertyInfo[] GetCustomProperties()
            {
                // Create two custom properties to serialize the Layout of the RadDocking and the Content of the RadPanes
                return new CustomPropertyInfo[]
            {
                new CustomPropertyInfo("Layout", typeof(string)),
                new CustomPropertyInfo("Content", typeof(List<PaneProxy>)) { AllowCreateInstance =false, TreatAsUI = false},
            };
            }

            public void InitializeObject(object context)
            {
            }

            public object InitializeValue(CustomPropertyInfo customPropertyInfo, object context)
            {
                if (customPropertyInfo.Name == "Content")
                {
                    // See remarks in ProvideValue method:
                    // provide the values on which the saved properties will be restored upon
                    RadDocking docking = context as RadDocking;
                    List<PaneProxy> proxies = new List<PaneProxy>();
                    foreach (RadPane pane in this.GetOrderedPanes(docking).ToArray())
                    {
                        proxies.Add(new PaneProxy() { Content = pane.Content });
                    }
                    return proxies;
                }
                return null;
            }

            public object ProvideValue(CustomPropertyInfo customPropertyInfo, object context)
            {
                RadDocking docking = context as RadDocking;
                if (customPropertyInfo.Name == "Layout")
                {
                    // let the RadDocking save the layout of the Panes:
                    return this.SaveLayoutAsString(docking);
                }
                else if (customPropertyInfo.Name == "Content")
                {
                    // create proxies for all of the Panes and save their content
                    IEnumerable<RadPane> panes = this.GetOrderedPanes(docking);
                    List<PaneProxy> proxies = new List<PaneProxy>();
                    foreach (RadPane pane in panes)
                    {
                        proxies.Add(new PaneProxy() { Content = pane.Content });
                    }
                    return proxies;
                }
                return null;
            }

            public void RestoreValue(CustomPropertyInfo customPropertyInfo, object context, object value)
            {
                if (customPropertyInfo.Name == "Layout")
                {
                    // let the RadDocking load the layout of the RadPanes
                    this.LoadLayoutFromString(value.ToString(), context as RadDocking);
                }
                else if (customPropertyInfo.Name == "Content")
                {
                    // the PersistenceManager does not re-create UI elements - in this case the Content of the RadPane.
                    // So, instead of providing a value on which the saved properties will be applied,
                    // we will use the InitializeValue method.
                }
            }

            private string SaveLayoutAsString(RadDocking instance)
            {
                MemoryStream stream = new MemoryStream();
                instance.SaveLayout(stream);

                stream.Seek(0, SeekOrigin.Begin);

                StreamReader reader = new StreamReader(stream);
                return reader.ReadToEnd();
            }

            private void LoadLayoutFromString(string xml, RadDocking instance)
            {
                using (Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
                {
                    stream.Seek(0, SeekOrigin.Begin);
                    instance.LoadLayout(stream);
                }
            }

            private IEnumerable<RadPane> GetOrderedPanes(RadDocking docking)
            {
                // get the RadPanes always in the same order:
                RadPane[] array = docking.Panes.ToArray();
                Array.Sort(array, new RadPaneComparer());
                return array;
            }
        }

        public class RadPaneComparer : IComparer<RadPane>
        {
            int IComparer<RadPane>.Compare(RadPane x, RadPane y)
            {
                // compare RadPanes by their serialization tag:
                string xSerializationTag = RadDocking.GetSerializationTag(x);
                string ySerializationTag = RadDocking.GetSerializationTag(y);

                return xSerializationTag.CompareTo(ySerializationTag);
            }
        }

        //====================================================================================
        //
        //====================================================================================
        public class GridViewCustomPropertyProvider : ICustomPropertyProvider
        {
            public CustomPropertyInfo[] GetCustomProperties()
            {
                // Create three custom properties to persist the Columns, Sorting and Group descriptors using proxy objects
                return new CustomPropertyInfo[]
                {
                    new CustomPropertyInfo("Columns", typeof(List<ColumnProxy>)),
                    new CustomPropertyInfo("SortDescriptors", typeof(List<SortDescriptorProxy>)),
                    new CustomPropertyInfo("FilterDescriptors", typeof(List<FilterSetting>)),
                    new CustomPropertyInfo("GroupDescriptors", typeof(List<GroupDescriptorProxy>)),
                };
            }

            public void InitializeObject(object context)
            {
                if (context is RadGridView)
                {
                    RadGridView gridView = context as RadGridView;
                    gridView.SortDescriptors.Clear();
                    gridView.GroupDescriptors.Clear();
                    gridView.FilterDescriptors.Clear();
                }
            }

            public object InitializeValue(CustomPropertyInfo customPropertyInfo, object context)
            {
                return null;
            }

            public object ProvideValue(CustomPropertyInfo customPropertyInfo, object context)
            {
                RadGridView gridView = context as RadGridView;
                if (customPropertyInfo.Name == "Columns")
                {
                    // create proxies for all of the columns and save only specific properties
                    List<ColumnProxy> proxies = new List<ColumnProxy>();
                    foreach (GridViewColumn column in gridView.Columns)
                    {
                        proxies.Add(new ColumnProxy()
                        {
                            UniqueName = column.UniqueName,
                            Header = column.Header.ToString(),
                            DisplayOrder = column.DisplayIndex,
                            Width = column.Width,
                        });
                    }
                    return proxies;
                }
                else if (customPropertyInfo.Name == "SortDescriptors")
                {
                    // create proxies for all of the sort descriptors and save only specific properties
                    List<SortDescriptorProxy> proxies = new List<SortDescriptorProxy>();
                    foreach (ColumnSortDescriptor descriptor in gridView.SortDescriptors)
                    {
                        proxies.Add(new SortDescriptorProxy()
                        {
                            ColumnUniqueName = descriptor.Column.UniqueName,
                            SortDirection = descriptor.SortDirection,
                        });
                    }
                    return proxies;
                }
                else if (customPropertyInfo.Name == "GroupDescriptors")
                {
                    // create proxies for all of the group descriptors and save only specific properties
                    List<GroupDescriptorProxy> proxies = new List<GroupDescriptorProxy>();
                    foreach (ColumnGroupDescriptor descriotor in gridView.GroupDescriptors)
                    {
                        proxies.Add(new GroupDescriptorProxy()
                        {
                            ColumnUniqueName = descriotor.Column.UniqueName,
                            SortDirection = descriotor.SortDirection,
                        });
                    }
                    return proxies;
                }
                else if (customPropertyInfo.Name == "FilterDescriptors")
                {
                    // create proxies for all of the filter descriptors and save only specific properties
                    List<FilterSetting> proxies = new List<FilterSetting>();
                    foreach (IColumnFilterDescriptor cfd in gridView.FilterDescriptors.OfType<IColumnFilterDescriptor>())
                    {
                        FilterSetting setting = new FilterSetting();

                        if (cfd.FieldFilter.Filter1.Value != Telerik.Windows.Data.FilterDescriptor.UnsetValue)
                        {
                            setting.Filter1 = new FilterDescriptorProxy();
                            setting.Filter1.Member = cfd.FieldFilter.Filter1.Member;
                            setting.Filter1.Operator = cfd.FieldFilter.Filter1.Operator;
                            setting.Filter1.Value = cfd.FieldFilter.Filter1.Value;
                        }

                        if (cfd.FieldFilter.Filter2.Value != Telerik.Windows.Data.FilterDescriptor.UnsetValue)
                        {
                            setting.Filter2 = new FilterDescriptorProxy();
                            setting.Filter2.Member = cfd.FieldFilter.Filter2.Member;
                            setting.Filter2.Operator = cfd.FieldFilter.Filter2.Operator;
                            setting.Filter2.Value = cfd.FieldFilter.Filter2.Value;
                        }
                        foreach (Telerik.Windows.Data.FilterDescriptor fd in cfd.DistinctFilter.FilterDescriptors.OfType<Telerik.Windows.Data.FilterDescriptor>())
                        {
                            if (fd.Value == Telerik.Windows.Data.FilterDescriptor.UnsetValue)
                            {
                                continue;
                            }

                            FilterDescriptorProxy fds = new FilterDescriptorProxy();
                            fds.Member = fd.Member;
                            fds.Operator = fd.Operator;
                            fds.Value = fd.Value;
                            setting.SelectedDistinctValues.Add(fds);
                        }

                        proxies.Add(setting);
                        setting.PropertyName = setting.PropertyName = cfd.Column.DataMemberBinding.Path.Path;
                    }
                    return proxies;
                }
                return null;
            }

            public void RestoreValue(CustomPropertyInfo customPropertyInfo, object context, object value)
            {
                RadGridView gridView = context as RadGridView;
                if (customPropertyInfo.Name == "Columns")
                {
                    List<ColumnProxy> savedProxies = value as List<ColumnProxy>;

                    // restore properties on the saved columns:
                    foreach (ColumnProxy proxy in savedProxies)
                    {
                        GridViewColumn column = this.GetColumnInstance(gridView, proxy.UniqueName);
                        if (column != null)
                        {
                            column.DisplayIndex = proxy.DisplayOrder;
                            column.Header = proxy.Header;
                            column.Width = proxy.Width;
                        }
                    }
                }
                else if (customPropertyInfo.Name == "SortDescriptors")
                {
                    gridView.SortDescriptors.Clear();
                    List<SortDescriptorProxy> savedProxies = value as List<SortDescriptorProxy>;

                    // restore properties on the saved sort descriptors:
                    foreach (SortDescriptorProxy proxy in savedProxies)
                    {
                        GridViewColumn column = this.GetColumnInstance(gridView, proxy.ColumnUniqueName);
                        gridView.SortDescriptors.Add(new ColumnSortDescriptor() { Column = column, SortDirection = proxy.SortDirection });
                    }
                }
                else if (customPropertyInfo.Name == "GroupDescriptors")
                {
                    gridView.GroupDescriptors.Clear();
                    List<GroupDescriptorProxy> savedProxies = value as List<GroupDescriptorProxy>;

                    // restore properties on the saved group descriptors:
                    foreach (GroupDescriptorProxy proxy in savedProxies)
                    {
                        GridViewColumn column = this.GetColumnInstance(gridView, proxy.ColumnUniqueName);
                        gridView.GroupDescriptors.Add(new ColumnGroupDescriptor() { Column = column, SortDirection = proxy.SortDirection });
                    }
                }
                else if (customPropertyInfo.Name == "FilterDescriptors")
                {
                    gridView.FilterDescriptors.Clear();
                    List<FilterSetting> settings = value as List<FilterSetting>;
                    foreach (FilterSetting setting in settings)
                    {
                        FilterSetting currentSetting = setting;

                        GridViewDataColumn matchingColumn =
                        (from column in gridView.Columns.OfType<GridViewDataColumn>()
                         where column.DataMemberBinding.Path.Path == currentSetting.PropertyName
                         select column).FirstOrDefault();

                        if (matchingColumn != null)
                        {
                            ColumnFilterDescriptor cfd = new ColumnFilterDescriptor(matchingColumn);

                            if (setting.Filter1 != null && setting.Filter1.Member != null)
                            {
                                cfd.FieldFilter.Filter1.Member = setting.Filter1.Member;
                                cfd.FieldFilter.Filter1.Operator = setting.Filter1.Operator;
                                cfd.FieldFilter.Filter1.Value = setting.Filter1.Value;
                            }

                            if (setting.Filter2 != null && setting.Filter2.Member != null)
                            {
                                cfd.FieldFilter.Filter2.Member = setting.Filter2.Member;
                                cfd.FieldFilter.Filter2.Operator = setting.Filter2.Operator;
                                cfd.FieldFilter.Filter2.Value = setting.Filter2.Value;
                            }

                            foreach (FilterDescriptorProxy fds in setting.SelectedDistinctValues)
                            {
                                Telerik.Windows.Data.FilterDescriptor fd = new Telerik.Windows.Data.FilterDescriptor();
                                fd.Member = fds.Member;
                                fd.Operator = fds.Operator;
                                fd.Value = fds.Value;
                                cfd.DistinctFilter.FilterDescriptors.Add(fd);
                            }
                            setting.PropertyName = cfd.Column.DataMemberBinding.Path.Path;

                            gridView.FilterDescriptors.Add(cfd);
                        }
                    }
                }
            }

            private GridViewColumn GetColumnInstance(RadGridView gridView, string uniqueName)
            {
                foreach (GridViewColumn column in gridView.Columns)
                {
                    if (column.UniqueName == uniqueName)
                        return column;
                }
                return null;
            }
        }

        public class ColumnProxy
        {
            public string UniqueName { get; set; }
            public int DisplayOrder { get; set; }
            public string Header { get; set; }
            public GridViewLength Width { get; set; }
        }

        public class SortDescriptorProxy
        {
            public string ColumnUniqueName { get; set; }
            public ListSortDirection SortDirection { get; set; }
        }

        public class GroupDescriptorProxy
        {
            public string ColumnUniqueName { get; set; }
            public ListSortDirection? SortDirection { get; set; }
        }

        public class FilterDescriptorProxy
        {
            public string Member { get; set; }
            public FilterOperator Operator { get; set; }
            public object Value { get; set; }
            public bool IsCaseSEnsitive { get; set; }
        }

        public class FilterSetting
        {
            public string PropertyName { get; set; }
            List<FilterDescriptorProxy> _SelectedDistinctValues;
            public List<FilterDescriptorProxy> SelectedDistinctValues
            {
                get
                {
                    if (_SelectedDistinctValues == null)
                    {
                        _SelectedDistinctValues = new List<FilterDescriptorProxy>();
                    }
                    return _SelectedDistinctValues;
                }
            }

            FilterDescriptorProxy _Filter1;
            public FilterDescriptorProxy Filter1
            {
                get
                {
                    return _Filter1;
                }
                set
                {
                    _Filter1 = value;
                }
            }

            FilterDescriptorProxy _Filter2;
            public FilterDescriptorProxy Filter2
            {
                get
                {
                    return _Filter2;
                }
                set
                {
                    _Filter2 = value;
                }
            }
        }

        //====================================================================================
        //
        //====================================================================================
        public class RichTextBoxCustomPropertyProvider : ICustomPropertyProvider
        {
            #region ICustomPropertyProvider Members
            public CustomPropertyInfo[] GetCustomProperties()
            {
                // Create two custom properties to serialize the RichTextBox properties and content
                return new CustomPropertyInfo[]
                    {
                        new CustomPropertyInfo("Content", typeof(string)),
                        new CustomPropertyInfo("AcceptsReturn", typeof(bool)),
                    };
            }

            public void InitializeObject(object context)
            {

            }

            public object InitializeValue(CustomPropertyInfo customPropertyInfo, object context)
            {
                return null;
            }

            public object ProvideValue(CustomPropertyInfo customPropertyInfo, object context)
            {
                RadRichTextBox owner = context as RadRichTextBox;
                if (customPropertyInfo.Name == "Content")
                {
                    TxtFormatProvider provider = new TxtFormatProvider();
                    string content = provider.Export(owner.Document);
                    return content;
                }
                else
                {
                    return this.GetValueSafely(customPropertyInfo.Name, owner);
                }
            }

            private object GetValueSafely(string propertyName, RadRichTextBox owner)
            {
                PropertyInfo info = owner.GetType().GetProperty(propertyName);
                if (info != null)
                {
                    return info.GetValue(owner, null);
                }
                else
                    throw new Exception();
            }

            private void SetValueSafely(string propertyName, object value, RadRichTextBox owner)
            {
                PropertyInfo info = owner.GetType().GetProperty(propertyName);
                if (info != null)
                {
                    info.SetValue(owner, value, null);
                }
                else
                    throw new Exception();
            }

            public void RestoreValue(CustomPropertyInfo customPropertyInfo, object context, object value)
            {
                RadRichTextBox owner = context as RadRichTextBox;
                if (customPropertyInfo.Name == "Content")
                {
                    TxtFormatProvider provider = new TxtFormatProvider();
                    owner.Document = provider.Import(value.ToString());
                }
                else
                {
                    this.SetValueSafely(customPropertyInfo.Name, value, owner);
                }
            }
            #endregion
        }

        //====================================================================================
        //
        //====================================================================================
        public class PaneProxy
        {
            public object Content { get; set; }
        }
    }

  7. Chavdar Dimitrov
    Admin
    Chavdar Dimitrov avatar
    104 posts

    Posted 04 May 2012 Link to this post

    Hi Oliver,

    Thank you for sending the error list.

    Unfortunately, some of the errors are in French (not sure). Is is possible to send us an error list in English?

    Additionally, it will be very helpful if you tell us which are the exact versions of the controls - the old one and the new one.

    Looking forward to your reply.

    Kind regards,
    Chavdar,
    the Telerik team

    Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

  8. Oliver
    Oliver avatar
    263 posts
    Member since:
    Feb 2011

    Posted 04 May 2012 Link to this post

    Hi Chavdar,

    as I mentionned in my initial email, V2011.3.1220.35 for the old control and V2012.1.326.35 for the new control.

    Traduction was made by Google and I add a filter on Telerik error message ;)

    Error 5 'Telerik.Windows.Data.OperatorValueFilterDescriptorBase' does not contain a definition for 'Member' and no extension method 'Member' accepting a first argument of type 'Telerik.Windows.Data.OperatorValueFilterDescriptorBase' was found (a using directive or an assembly reference is missing it?) D: \ Development \ GestX.Courant \ RisGC \ Client \ ClientHelper \ PersistenceStorage.cs 554 74 ClientHelper
    Error 6 'Telerik.Windows.Data.OperatorValueFilterDescriptorBase' does not contain a definition for 'Member' and no extension method 'Member' accepting a first argument of type 'Telerik.Windows.Data.OperatorValueFilterDescriptorBase' was found (a using directive or an assembly reference is missing it?) D: \ Development \ GestX.Courant \ RisGC \ Client \ ClientHelper \ PersistenceStorage.cs 562 74 ClientHelper
    Error 7 'Telerik.Windows.Controls.GridViewColumn' does not contain a definition for 'DataMemberBinding' and no extension method 'DataMemberBinding' accepting a first argument of type 'Telerik.Windows.Controls.GridViewColumn' was found (a using directive or an assembly reference is missing it?) D: \ Development \ GestX.Courant \ RisGC \ Client \ ClientHelper \ PersistenceStorage.cs 581 78 ClientHelper
    Error 8 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' is inaccessible due to its protection level D: \ Development \ GestX.Courant \ RisGC \ Client \ ClientHelper \ PersistenceStorage.cs 646 25 ClientHelper
    Error 9 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' is inaccessible due to its protection level D: \ Development \ GestX.Courant \ RisGC \ Client \ ClientHelper \ PersistenceStorage.cs 646 58 ClientHelper
    Error 10 Can not create an instance of abstract class or interface 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' D: \ Development \ GestX.Courant \ RisGC \ Client \ ClientHelper \ PersistenceStorage.cs 646 54 ClientHelper
    Error 11 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' does not contain a definition for 'FieldFilter' and no extension method 'FieldFilter' accepting a first argument of type 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' n ' was found (a using directive or an assembly reference is missing it?) D: \ Development \ GestX.Courant \ RisGC \ Client \ ClientHelper \ PersistenceStorage.cs 650 33 ClientHelper
    Error 12 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' does not contain a definition for 'FieldFilter' and no extension method 'FieldFilter' accepting a first argument of type 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' n ' was found (a using directive or an assembly reference is missing it?) D: \ Development \ GestX.Courant \ RisGC \ Client \ ClientHelper \ PersistenceStorage.cs 651 33 ClientHelper
    Error 13 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' does not contain a definition for 'FieldFilter' and no extension method 'FieldFilter' accepting a first argument of type 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' n ' was found (a using directive or an assembly reference is missing it?) D: \ Development \ GestX.Courant \ RisGC \ Client \ ClientHelper \ PersistenceStorage.cs 652 33 ClientHelper
    Error 14 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' does not contain a definition for 'FieldFilter' and no extension method 'FieldFilter' accepting a first argument of type 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' n ' was found (a using directive or an assembly reference is missing it?) D: \ Development \ GestX.Courant \ RisGC \ Client \ ClientHelper \ PersistenceStorage.cs 657 33 ClientHelper
    Error 15 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' does not contain a definition for 'FieldFilter' and no extension method 'FieldFilter' accepting a first argument of type 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' n ' was found (a using directive or an assembly reference is missing it?) D: \ Development \ GestX.Courant \ RisGC \ Client \ ClientHelper \ PersistenceStorage.cs 658 33 ClientHelper
    Error 16 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' does not contain a definition for 'FieldFilter' and no extension method 'FieldFilter' accepting a first argument of type 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' n ' was found (a using directive or an assembly reference is missing it?) D: \ Development \ GestX.Courant \ RisGC \ Client \ ClientHelper \ PersistenceStorage.cs 659 33 ClientHelper
    Error 17 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' does not contain a definition for 'DistinctFilter' and no extension method 'DistinctFilter' accepting a first argument of type 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' n ' was found (a using directive or an assembly reference is missing it?) D: \ Development \ GestX.Courant \ RisGC \ Client \ ClientHelper \ PersistenceStorage.cs 668 33 ClientHelper
    Error 18 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' does not contain a definition for 'Column' and no extension method 'Column' accepting a first argument of type 'Telerik.Windows.Controls.GridView.ColumnFilterDescriptor' n ' was found (a using directive or an assembly reference is missing it?) D: \ Development \ GestX.Courant \ RisGC \ Client \ ClientHelper \ PersistenceStorage.cs 670 52 ClientHelperError 244 'Telerik.Windows.Data.OperatorValueFilterDescriptorBase' does not contain a definition for 'Member' and no extension method 'Member' accepting a first argument of type 'Telerik.Windows.Data.OperatorValueFilterDescriptorBase' could be found (are you missing a using directive or an assembly reference?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 554 74 ClientHelper
    Error 245 'Telerik.Windows.Data.OperatorValueFilterDescriptorBase' does not contain a definition for 'Member' and no extension method 'Member' accepting a first argument of type 'Telerik.Windows.Data.OperatorValueFilterDescriptorBase' could be found (are you missing a using directive or an assembly reference?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 562 74 ClientHelper
    Error 246 'Telerik.Windows.Controls.GridViewColumn' does not contain a definition for 'DataMemberBinding' and no extension method 'DataMemberBinding' accepting a first argument of type 'Telerik.Windows.Controls.GridViewColumn' could be found (are you missing a using directive or an assembly reference?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 581 78 ClientHelper
    Error 247 The type or namespace name 'ColumnFilterDescriptor' could not be found (are you missing a using directive or an assembly reference?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 646 25 ClientHelper
    Error 248 The type or namespace name 'ColumnFilterDescriptor' could not be found (are you missing a using directive or an assembly reference?) D:\Developpement\GestX.Courant\RisGC\Client\ClientHelper\PersistenceStorage.cs 646 58 ClientHelper

    Thank's
  9. Chavdar Dimitrov
    Admin
    Chavdar Dimitrov avatar
    104 posts

    Posted 07 May 2012 Link to this post

    Hello Oliver,

    Sorry for the confusion regarding the versions.

    We have introduced breaking changes in the filtering features with the Q1 2012 version of the Controls. Please, check here for detailed information on all the changes done.

    I hope this will help. Do not hesitate to come back to us if you have any additional questions.

    Kind regards,
    Chavdar,
    the Telerik team

    Explore the entire Telerik portfolio by downloading the Ultimate Collection trial package. Get it now >>

  10. Oliver
    Oliver avatar
    263 posts
    Member since:
    Feb 2011

    Posted 07 May 2012 Link to this post

    Hi Chavdar.

    I'm a little bit confuse with all this :(

    The piece of code I use for my persistence was provided by Telerik couples moneth ago. Can you check it and tell me what I have to do because I'm not sure exatcly what I ihave to do.

    Thank's

    public class GridViewCustomPropertyProvider : ICustomPropertyProvider
        {
            public CustomPropertyInfo[] GetCustomProperties()
            {
                // Create three custom properties to persist the Columns, Sorting and Group descriptors using proxy objects
                return new CustomPropertyInfo[]
                {
                    new CustomPropertyInfo("Columns", typeof(List<ColumnProxy>)),
                    new CustomPropertyInfo("SortDescriptors", typeof(List<SortDescriptorProxy>)),
                    new CustomPropertyInfo("FilterDescriptors", typeof(List<FilterSetting>)),
                    new CustomPropertyInfo("GroupDescriptors", typeof(List<GroupDescriptorProxy>)),
                };
            }

            public void InitializeObject(object context)
            {
                if (context is RadGridView)
                {
                    RadGridView gridView = context as RadGridView;
                    gridView.SortDescriptors.Clear();
                    gridView.GroupDescriptors.Clear();
                    gridView.FilterDescriptors.Clear();
                }
            }

            public object InitializeValue(CustomPropertyInfo customPropertyInfo, object context)
            {
                return null;
            }

            public object ProvideValue(CustomPropertyInfo customPropertyInfo, object context)
            {
                RadGridView gridView = context as RadGridView;
                if (customPropertyInfo.Name == "Columns")
                {
                    // create proxies for all of the columns and save only specific properties
                    List<ColumnProxy> proxies = new List<ColumnProxy>();
                    foreach (GridViewColumn column in gridView.Columns)
                    {
                        proxies.Add(new ColumnProxy()
                        {
                            UniqueName = column.UniqueName,
                            Header = column.Header.ToString(),
                            DisplayOrder = column.DisplayIndex,
                            Width = column.Width,
                        });
                    }
                    return proxies;
                }
                else if (customPropertyInfo.Name == "SortDescriptors")
                {
                    // create proxies for all of the sort descriptors and save only specific properties
                    List<SortDescriptorProxy> proxies = new List<SortDescriptorProxy>();
                    foreach (ColumnSortDescriptor descriptor in gridView.SortDescriptors)
                    {
                        proxies.Add(new SortDescriptorProxy()
                        {
                            ColumnUniqueName = descriptor.Column.UniqueName,
                            SortDirection = descriptor.SortDirection,
                        });
                    }
                    return proxies;
                }
                else if (customPropertyInfo.Name == "GroupDescriptors")
                {
                    // create proxies for all of the group descriptors and save only specific properties
                    List<GroupDescriptorProxy> proxies = new List<GroupDescriptorProxy>();
                    foreach (ColumnGroupDescriptor descriotor in gridView.GroupDescriptors)
                    {
                        proxies.Add(new GroupDescriptorProxy()
                        {
                            ColumnUniqueName = descriotor.Column.UniqueName,
                            SortDirection = descriotor.SortDirection,
                        });
                    }
                    return proxies;
                }
                else if (customPropertyInfo.Name == "FilterDescriptors")
                {
                    // create proxies for all of the filter descriptors and save only specific properties
                    List<FilterSetting> proxies = new List<FilterSetting>();
                    foreach (IColumnFilterDescriptor cfd in gridView.FilterDescriptors.OfType<IColumnFilterDescriptor>())
                    {
                        FilterSetting setting = new FilterSetting();

                        if (cfd.FieldFilter.Filter1.Value != Telerik.Windows.Data.FilterDescriptor.UnsetValue)
                        {
                            setting.Filter1 = new FilterDescriptorProxy();
                            setting.Filter1.Member = cfd.FieldFilter.Filter1.Member;
                            setting.Filter1.Operator = cfd.FieldFilter.Filter1.Operator;
                            setting.Filter1.Value = cfd.FieldFilter.Filter1.Value;
                        }

                        if (cfd.FieldFilter.Filter2.Value != Telerik.Windows.Data.FilterDescriptor.UnsetValue)
                        {
                            setting.Filter2 = new FilterDescriptorProxy();
                            setting.Filter2.Member = cfd.FieldFilter.Filter2.Member;
                            setting.Filter2.Operator = cfd.FieldFilter.Filter2.Operator;
                            setting.Filter2.Value = cfd.FieldFilter.Filter2.Value;
                        }
                        foreach (Telerik.Windows.Data.FilterDescriptor fd in cfd.DistinctFilter.FilterDescriptors.OfType<Telerik.Windows.Data.FilterDescriptor>())
                        {
                            if (fd.Value == Telerik.Windows.Data.FilterDescriptor.UnsetValue)
                            {
                                continue;
                            }

                            FilterDescriptorProxy fds = new FilterDescriptorProxy();
                            fds.Member = fd.Member;
                            fds.Operator = fd.Operator;
                            fds.Value = fd.Value;
                            setting.SelectedDistinctValues.Add(fds);
                        }

                        proxies.Add(setting);
                        setting.PropertyName = setting.PropertyName = cfd.Column.DataMemberBinding.Path.Path;
                    }
                    return proxies;
                }
                return null;
            }

            public void RestoreValue(CustomPropertyInfo customPropertyInfo, object context, object value)
            {
                RadGridView gridView = context as RadGridView;
                if (customPropertyInfo.Name == "Columns")
                {
                    List<ColumnProxy> savedProxies = value as List<ColumnProxy>;

                    // restore properties on the saved columns:
                    foreach (ColumnProxy proxy in savedProxies)
                    {
                        GridViewColumn column = this.GetColumnInstance(gridView, proxy.UniqueName);
                        if (column != null)
                        {
                            column.DisplayIndex = proxy.DisplayOrder;
                            column.Header = proxy.Header;
                            column.Width = proxy.Width;
                        }
                    }
                }
                else if (customPropertyInfo.Name == "SortDescriptors")
                {
                    gridView.SortDescriptors.Clear();
                    List<SortDescriptorProxy> savedProxies = value as List<SortDescriptorProxy>;

                    // restore properties on the saved sort descriptors:
                    foreach (SortDescriptorProxy proxy in savedProxies)
                    {
                        GridViewColumn column = this.GetColumnInstance(gridView, proxy.ColumnUniqueName);
                        gridView.SortDescriptors.Add(new ColumnSortDescriptor() { Column = column, SortDirection = proxy.SortDirection });
                    }
                }
                else if (customPropertyInfo.Name == "GroupDescriptors")
                {
                    gridView.GroupDescriptors.Clear();
                    List<GroupDescriptorProxy> savedProxies = value as List<GroupDescriptorProxy>;

                    // restore properties on the saved group descriptors:
                    foreach (GroupDescriptorProxy proxy in savedProxies)
                    {
                        GridViewColumn column = this.GetColumnInstance(gridView, proxy.ColumnUniqueName);
                        gridView.GroupDescriptors.Add(new ColumnGroupDescriptor() { Column = column, SortDirection = proxy.SortDirection });
                    }
                }
                else if (customPropertyInfo.Name == "FilterDescriptors")
                {
                    gridView.FilterDescriptors.Clear();
                    List<FilterSetting> settings = value as List<FilterSetting>;
                    foreach (FilterSetting setting in settings)
                    {
                        FilterSetting currentSetting = setting;

                        GridViewDataColumn matchingColumn =
                        (from column in gridView.Columns.OfType<GridViewDataColumn>()
                         where column.DataMemberBinding.Path.Path == currentSetting.PropertyName
                         select column).FirstOrDefault();

                        if (matchingColumn != null)
                        {
                            ColumnFilterDescriptor cfd = new ColumnFilterDescriptor(matchingColumn);      

                            if (setting.Filter1 != null && setting.Filter1.Member != null)
                            {
                                cfd.FieldFilter.Filter1.Member = setting.Filter1.Member;
                                cfd.FieldFilter.Filter1.Operator = setting.Filter1.Operator;
                                cfd.FieldFilter.Filter1.Value = setting.Filter1.Value;
                            }

                            if (setting.Filter2 != null && setting.Filter2.Member != null)
                            {
                                cfd.FieldFilter.Filter2.Member = setting.Filter2.Member;
                                cfd.FieldFilter.Filter2.Operator = setting.Filter2.Operator;
                                cfd.FieldFilter.Filter2.Value = setting.Filter2.Value;
                            }

                            foreach (FilterDescriptorProxy fds in setting.SelectedDistinctValues)
                            {
                                Telerik.Windows.Data.FilterDescriptor fd = new Telerik.Windows.Data.FilterDescriptor();
                                fd.Member = fds.Member;
                                fd.Operator = fds.Operator;
                                fd.Value = fds.Value;
                                cfd.DistinctFilter.FilterDescriptors.Add(fd);
                            }
                            setting.PropertyName = cfd.Column.DataMemberBinding.Path.Path;

                            gridView.FilterDescriptors.Add(cfd);
                        }
                    }
                }
            }

            private GridViewColumn GetColumnInstance(RadGridView gridView, string uniqueName)
            {
                foreach (GridViewColumn column in gridView.Columns)
                {
                    if (column.UniqueName == uniqueName)
                        return column;
                }
                return null;
            }
        }

  11. Oliver
    Oliver avatar
    263 posts
    Member since:
    Feb 2011

    Posted 07 May 2012 Link to this post

    Hi Chavdar,

    I get the code from the lastest demo and the compilation seem's to be ok.

    Thank's
  12. Oliver
    Oliver avatar
    263 posts
    Member since:
    Feb 2011

    Posted 07 May 2012 Link to this post

    Hi,

    I imported all the persistence data from the latest Telerik demo and after after testing some of my things, I came accross the following problem. When I persist a form, I received the following error message (Class PersistenceStorage is at the end):

    Error occurred during 'Save' file. Message: System.InvalidCastException: Unable to cast object of type 'Telerik.Windows.Data.SortDescriptor' to type 'Telerik.Windows.Controls.GridView.ColumnSortDescriptor'.
    to customPropertyInfo, Object context) in D: \ Development \ GestX.Courant \ RisGC \ Client \ ClientHelper \ PersistenceStorage.cs: line 519
    to Telerik.Windows.Persistence.Serialization.Serializer.HandleCustomPropertyProvider (Object objectToSerialize, Type type, String path, ReferenceValue parentValue, PropertyData parentPropData, SerializationMetadataCollection options, Boolean shouldValidateCriteria, Int32 nestingDepth) in 557
    to Telerik.Windows.Persistence.Serialization.Serializer.GeneratePropertyTree (objectToSerialize Object, String path, ReferenceValue parentValue, PropertyData parentPropData, SerializationMetadataCollection options, Boolean shouldValidateCriteria, Int32 nestingDepth) in 172
    to Telerik.Windows.Persistence.Serialization.Serializer.SaveCollectionValue (IEnumerable collection, String propertyName, Type propertyType, String propertyPath, ReferenceValue parentValue, SerializationMetadataCollection options, Boolean shouldValidateCriteria, Int32 nestingDepth, MatchResult propDataMatchResult) in 724
    to Telerik.Windows.Persistence.Serialization.Serializer.SaveProperty (PropertyInfo property, String path, Object obj, ReferenceValue parentValue, SerializationMetadataCollection options, Boolean shouldValidateCriteria, Int32 nestingDepth, PropertyData parentPropData, MatchResult parentMatchResult) in 393
    to Telerik.Windows.Persistence.Serialization.UISerializer.SaveProperty (PropertyInfo property, String path, Object obj, ReferenceValue parentValue, SerializationMetadataCollection options, Boolean shouldValidateCriteria, Int32 nestingDepth, PropertyData parentPropData, MatchResult parentMatchResult) in 90
    to Telerik.Windows.Persistence.Serialization.Serializer.GeneratePropertyTree (objectToSerialize Object, String path, ReferenceValue parentValue, PropertyData parentPropData, SerializationMetadataCollection options, Boolean shouldValidateCriteria, Int32 nestingDepth) in 221
    to Telerik.Windows.Persistence.Serialization.Serializer.SaveClassValue (Object value, String propertyName, Type propertyType, String propertyPath, ReferenceValue parentValue, SerializationMetadataCollection options, Boolean shouldValidateCriteria, Int32 nestingDepth, MatchResult propDataMatchResult) in 792
    to Telerik.Windows.Persistence.Serialization.Serializer.SaveProperty (PropertyInfo property, String path, Object obj, ReferenceValue parentValue, SerializationMetadataCollection options, Boolean shouldValidateCriteria, Int32 nestingDepth, PropertyData parentPropData, MatchResult parentMatchResult) in 419
    to Telerik.Windows.Persistence.Serialization.UISerializer.SaveProperty (PropertyInfo property, String path, Object obj, ReferenceValue parentValue, SerializationMetadataCollection options, Boolean shouldValidateCriteria, Int32 nestingDepth, PropertyData parentPropData, MatchResult parentMatchResult) in 90
    to Telerik.Windows.Persistence.Serialization.Serializer.GeneratePropertyTree (objectToSerialize Object, String path, ReferenceValue parentValue, PropertyData parentPropData, SerializationMetadataCollection options, Boolean shouldValidateCriteria, Int32 nestingDepth) in 221
    to Telerik.Windows.Persistence.Serialization.Serializer.GenerateRootElementTree (Object objectToSerialize) in 470
    to Telerik.Windows.Persistence.Serialization.Serializer.Serialize (Object obj) in 53
    to Telerik.Windows.Persistence.PersistenceManager.Save (Object obj) in 86
    to Telerik.Windows.Persistence.Storage.IsolatedStorageProvider.SaveToStorage () in 82
    to com.christiegrp.Neuron.ClientApplication.PersistenceStorage.Persist (PersistenceAction pPersistenceAction, String & pErrorMessage) in D: \ Development \ GestX.Courant \ RisGC \ Client \ ClientHelper \ PersistenceStorage.cs: line 96



    //====================================================================================
    // Author.......:
    // Creation date:
    // Fonction.....:
    //====================================================================================
    // Date       Prg  TT#    Details
    // ---------- ---- ------ ------------------------------------------------------------
    //
    //====================================================================================

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.IO;
    using System.Linq;
    using System.Reflection;
    using System.Text;

    using Telerik.Windows.Controls;
    using Telerik.Windows.Controls.GridView;
    using Telerik.Windows.Data;
    using Telerik.Windows.Documents.FormatProviders.Txt;
    using Telerik.Windows.Persistence;
    using Telerik.Windows.Persistence.Services;
    using Telerik.Windows.Persistence.Storage;
    using Telerik.Windows.Zip;

    using com.christiegrp.Neuron.Client;
    using com.ChristieGrp.Infrastructure;

    namespace com.christiegrp.Neuron.ClientApplication
    {
        static public class PersistenceStorage
        {       
            #region Public methods.
            /// <summary>
            /// Set a StorageId before Loading/Saving a control and removing it's StorageId after the action was taken.
            /// The file location is "$APPDATA\IsolatedStorage\..."
            /// </summary>
            /// <param name="pPersistenceAction">Load/Save</param>
            /// <param name="pObjectToPersist">Object to persist.</param>
            /// <param name="pStorageId">StorageId of the object to persist. Null mean that a custom StorageId will be use.</param>
            /// <param name="pErrorMessage">Error received during the persistence.</param>
            /// <returns>true if successfull otherwise false</returns>
            static public bool Persist(PersistenceAction pPersistenceAction, System.Windows.DependencyObject pObjectToPersist, string pStorageId, out string pErrorMessage)
            {           
                bool result = false;
                pErrorMessage = string.Empty;

                if (pObjectToPersist != null)
                {
                    // Validate if we need to generate a custom StorageId.
                    if (string.IsNullOrEmpty(pStorageId))
                    {
                        pStorageId = GetCustomStorageId(pObjectToPersist);
                    }

                    try
                    {
                        PersistenceManager.SetStorageId(pObjectToPersist, pStorageId);
                        result = Persist(pPersistenceAction, out pErrorMessage);
                    }
                    finally
                    {
                        pObjectToPersist.ClearValue(PersistenceManager.StorageIdProperty);
                    }
                }

                return result;
            }

            /// <summary>
            /// Load/Save all controls that contain "telerik:PersistenceManager.StorageId="..."
            /// The file location is "$APPDATA\IsolatedStorage\..."
            /// </summary>
            /// <param name="pPersistenceAction">Load/Save</param>
            /// <param name="pErrorMessage">Error received during the persistence.</param>
            /// <returns>true if successfull otherwise false</returns>
            static public bool Persist(PersistenceAction pPersistenceAction, out string pErrorMessage)
            {           
                pErrorMessage = string.Empty;
                PersistenceManager manager = new PersistenceManager();
                manager.PropertyPersisting += new Telerik.Windows.Persistence.Events.PropertyPersistingEventHandler(manager_PropertyPersisting);
                IsolatedStorageProvider storage = new IsolatedStorageProvider(manager);

                try
                {
                    try
                    {
                        if (pPersistenceAction == PersistenceAction.Load)
                        {
                            storage.LoadFromStorage(); // TODO CHECK
                        }
                        else if (pPersistenceAction == PersistenceAction.Save)
                        {
                            storage.SaveToStorage(); // TODO CHECK
                        }

                        return true;
                    }
                    catch (Exception ex)
                    {
                        GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                        tracingTool.Log(GclLogger.Level.Error, "PERST001", "Error occured during '{0}' file. Message: {1}", pPersistenceAction.ToString(), ex.ToString());
                        pErrorMessage = ex.Message;
                        return false;
                    }
                }
                finally
                {
                    manager.PropertyPersisting += new Telerik.Windows.Persistence.Events.PropertyPersistingEventHandler(manager_PropertyPersisting);
                }
            }

            /// <summary>
            /// Load/Save from/to stream object.
            /// </summary>
            /// <param name="pDataSource">If different from null, we persist load/save from/in database.</param>
            /// <param name="pObject">Object to load/save.</param>
            /// <param name="pStream">Stream that contain the serialized object. Object content is ignored if pDatabaseStorage is true.</param>
            /// <param name="pPersistenceAction">Load/Save</param>       
            /// <param name="pErrorMessage">Error received during the persistence.</param>
            /// <returns></returns>
            static public bool Persist(NeuronDataSource pDataSource, object pObject, ref Stream pStream, PersistenceAction pPersistenceAction, out string pErrorMessage)
            {
                // TODO: Compress/Uncompress the stream before save/load to/from database.

                mResult = true;
                pErrorMessage = string.Empty;
                PersistenceManager manager = new PersistenceManager();
                manager.PersistenceError += new Telerik.Windows.Persistence.Events.PersistenceErrorEventHandler(manager_PersistenceError);
                manager.PropertyPersisting += new Telerik.Windows.Persistence.Events.PropertyPersistingEventHandler(manager_PropertyPersisting);

                try
                {
                    if (pPersistenceAction == PersistenceAction.Load)
                    {
                        if (pObject != null && pStream != null)
                        {
                            pStream.Position = 0L; // TO CHECK
                            manager.Load(pObject, pStream); // TO CHECK
                        }
                        else
                        {
                            pErrorMessage = "pObject and/or pStream cannot be null.";
                            GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                            tracingTool.Log(GclLogger.Level.Error, "PERST005", "Error occured during '{0}' stream. Message: {1}", pPersistenceAction.ToString(), pErrorMessage);
                            mResult = false;
                        }
                    }
                    else if (pPersistenceAction == PersistenceAction.Save)
                    {
                        if (pObject != null)
                        {
                            pStream = manager.Save(pObject); // TO CHECK
                        }
                        else
                        {
                            pErrorMessage = "pObject cannot be null.";
                            GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                            tracingTool.Log(GclLogger.Level.Error, "PERST006", "Error occured during '{0}' stream. Message: {1}", pPersistenceAction.ToString(), pErrorMessage);
                            mResult = false;
                        }
                    }
                }
                catch (Exception ex)
                {
                    GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                    tracingTool.Log(GclLogger.Level.Error, "PERST002", "Error occured during '{0}' stream. Message: {1}", pPersistenceAction.ToString(), ex.Message.ToString());
                    pErrorMessage = ex.Message;
                    mResult = false;
                }
                finally
                {
                    manager.PersistenceError -= new Telerik.Windows.Persistence.Events.PersistenceErrorEventHandler(manager_PersistenceError);
                    manager.PropertyPersisting -= new Telerik.Windows.Persistence.Events.PropertyPersistingEventHandler(manager_PropertyPersisting);
                    pErrorMessage = mErrorMessage;
                }

                return mResult;
            }

            /// <summary>
            /// Deleting all persistence files.
            /// </summary>
            /// <param name="pErrorMessage">Error receiving during deleting files.</param>
            static public void DeleteAll(out string pErrorMessage)
            {
                pErrorMessage = string.Empty;
                IsolatedStorageProvider iso = new IsolatedStorageProvider();
                try
                {
                    iso.DeleteIsolatedStorageFiles();
                }
                catch (Exception ex)
                {
                    GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                    tracingTool.Log(GclLogger.Level.Error, "PERST007", "Error occured during deleting files. Message: {0}", ex.Message.ToString());
                    pErrorMessage = ex.Message;
                }
            }

            /// <summary>
            /// Generate a custom StorageId.
            /// </summary>
            /// <param name="pObjectToPersist"></param>
            /// <returns></returns>
            static public string GetCustomStorageId(System.Windows.DependencyObject pObjectToPersist)
            {
                string customStorageId = string.Empty;
               

                if (pObjectToPersist != null)
                {
                    Assembly assembly = pObjectToPersist.GetType().Assembly;
                    customStorageId = assembly.GetName().Name + "." + pObjectToPersist.GetType().Name;               
                }

                return customStorageId;
            }
            #endregion

            #region Private methods.
            /// <summary>
            ///
            /// </summary>
            /// <param name="input"></param>
            /// <param name="output"></param>
            private static void copyTo(Stream input, Stream output)
            {
                byte[] buffer = new byte[32768]; // Fairly arbitrary size
                int bytesRead;

                while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
                {
                    output.Write(buffer, 0, bytesRead);
                }
            }

            /// <summary>
            /// Uncompress a stream.
            /// </summary>
            /// <param name="pStreamIn"></param>
            /// <param name="pStreamOut"></param>
            /// <returns></returns>
            private static bool uncompressStream(MemoryStream pStreamIn, out Stream pStreamOut)
            {
                pStreamOut = null;
                try
                {   
                    //TODO: Uncompress stream
                    return true;
                }
                catch (Exception ex)
                {
                    GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                    tracingTool.Log(GclLogger.Level.Error, "PERST003", "{0}", ex.Message.ToString());
                    mErrorMessage = ex.Message;
                    return false;
                }
            }

            /// <summary>
            /// Compream a stream.
            /// </summary>
            /// <param name="pStreamIn"></param>
            /// <param name="pStreamOut"></param>
            /// <returns></returns>
            private static bool compressStream(ref Stream pStreamIn, out MemoryStream pStreamOut)
            {
                pStreamOut = null;
                try
                {
                    pStreamOut = new MemoryStream();
                    ZipPackage package = ZipPackage.Create(pStreamOut);
                    package.AddStream(pStreamIn, "WindowPersistedData");
                    pStreamIn.Position = 0L;
                    return true;
                }
                catch (Exception ex)
                {
                    GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                    tracingTool.Log(GclLogger.Level.Error, "PERST004", "{0}", ex.Message.ToString());
                    mErrorMessage = ex.Message;
                    return false;
                }
            }

            /// <summary>
            /// Event triggered when the stream persistence didn't worked.
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            static void manager_PersistenceError(object sender, Telerik.Windows.Persistence.Events.PersistenceErrorEventArgs e)
            {
                mErrorMessage = e.Exception.Message;
                mResult = false;
                throw new NotImplementedException();
            }

            /// <summary>
            /// This event is used to prevent any BroderBrush to have a transparent color when we persist an object.
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            static void manager_PropertyPersisting(object sender, Telerik.Windows.Persistence.Events.PersistingPropertyEventArgs e)
            {
                //Not needed since version 2011.3.1116.35 of Telerik
                //if (e.Name == "BorderBrush")
                //    e.Cancel = true;
            }
            #endregion

            #region Private declarations.
            /// <summary>
            /// Persist a streaming object into or from database.
            /// </summary>
            /// <param name="pAction"></param>
            /// <param name="pStream"></param>
            /// <returns></returns>
            static private Boolean databaseStorage(PersistenceAction pAction, ref MemoryStream pStream)
            {
                Boolean result = true;

                if (pAction == PersistenceAction.Load)
                {
                    throw new NotImplementedException();
                }
                else if (pAction == PersistenceAction.Save)
                {
                    throw new NotImplementedException();
                }
               
                return result;
            }
            #endregion

            #region Enumerators.
            public enum PersistenceAction { Load, Save }
            #endregion

            #region Private declarations.
            static private string mErrorMessage;
            static private bool mResult;
            #endregion
        }

        //====================================================================================
        //
        //====================================================================================
        public class DockingCustomPropertyProvider : ICustomPropertyProvider
        {
            public CustomPropertyInfo[] GetCustomProperties()
            {
                // Create two custom properties to serialize the Layout of the RadDocking and the Content of the RadPanes
                return new CustomPropertyInfo[]
            {
                new CustomPropertyInfo("Layout", typeof(string)),
                new CustomPropertyInfo("Content", typeof(List<PaneProxy>)) { AllowCreateInstance =false, TreatAsUI = false},
            };
            }

            public void InitializeObject(object context)
            {
            }

            public object InitializeValue(CustomPropertyInfo customPropertyInfo, object context)
            {
                if (customPropertyInfo.Name == "Content")
                {
                    // See remarks in ProvideValue method:
                    // provide the values on which the saved properties will be restored upon
                    RadDocking docking = context as RadDocking;
                    List<PaneProxy> proxies = new List<PaneProxy>();
                    foreach (RadPane pane in this.GetOrderedPanes(docking).ToArray())
                    {
                        proxies.Add(new PaneProxy() { Content = pane.Content });
                    }
                    return proxies;
                }
                return null;
            }

            public object ProvideValue(CustomPropertyInfo customPropertyInfo, object context)
            {
                RadDocking docking = context as RadDocking;
                if (customPropertyInfo.Name == "Layout")
                {
                    // let the RadDocking save the layout of the Panes:
                    return this.SaveLayoutAsString(docking);
                }
                else if (customPropertyInfo.Name == "Content")
                {
                    // create proxies for all of the Panes and save their content
                    IEnumerable<RadPane> panes = this.GetOrderedPanes(docking);
                    List<PaneProxy> proxies = new List<PaneProxy>();
                    foreach (RadPane pane in panes)
                    {
                        proxies.Add(new PaneProxy() { Content = pane.Content });
                    }
                    return proxies;
                }
                return null;
            }

            public void RestoreValue(CustomPropertyInfo customPropertyInfo, object context, object value)
            {
                if (customPropertyInfo.Name == "Layout")
                {
                    // let the RadDocking load the layout of the RadPanes
                    this.LoadLayoutFromString(value.ToString(), context as RadDocking);
                }
                else if (customPropertyInfo.Name == "Content")
                {
                    // the PersistenceManager does not re-create UI elements - in this case the Content of the RadPane.
                    // So, instead of providing a value on which the saved properties will be applied,
                    // we will use the InitializeValue method.
                }
            }

            private string SaveLayoutAsString(RadDocking instance)
            {
                MemoryStream stream = new MemoryStream();
                instance.SaveLayout(stream);

                stream.Seek(0, SeekOrigin.Begin);

                StreamReader reader = new StreamReader(stream);
                return reader.ReadToEnd();
            }

            private void LoadLayoutFromString(string xml, RadDocking instance)
            {
                using (Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(xml)))
                {
                    stream.Seek(0, SeekOrigin.Begin);
                    instance.LoadLayout(stream);
                }
            }

            private IEnumerable<RadPane> GetOrderedPanes(RadDocking docking)
            {
                // get the RadPanes always in the same order:
                RadPane[] array = docking.Panes.ToArray();
                Array.Sort(array, new RadPaneComparer());
                return array;
            }
        }

        public class RadPaneComparer : IComparer<RadPane>
        {
            int IComparer<RadPane>.Compare(RadPane x, RadPane y)
            {
                // compare RadPanes by their serialization tag:
                string xSerializationTag = RadDocking.GetSerializationTag(x);
                string ySerializationTag = RadDocking.GetSerializationTag(y);

                return xSerializationTag.CompareTo(ySerializationTag);
            }
        }

        //====================================================================================
        //
        //====================================================================================
     public class GridViewCustomPropertyProvider : ICustomPropertyProvider
     {
      public CustomPropertyInfo[] GetCustomProperties()
      {
       // Create three custom properties to persist the Columns, Sorting and Group descriptors using proxy objects
       return new CustomPropertyInfo[]
                {
                    new CustomPropertyInfo("Columns", typeof(List<ColumnProxy>)),
                    new CustomPropertyInfo("SortDescriptors", typeof(List<SortDescriptorProxy>)),
                    new CustomPropertyInfo("FilterDescriptors", typeof(List<FilterSetting>)),
                    new CustomPropertyInfo("GroupDescriptors", typeof(List<GroupDescriptorProxy>)),
                };
      }

      public void InitializeObject(object context)
      {
       if (context is RadGridView)
       {
        RadGridView gridView = context as RadGridView;
        gridView.SortDescriptors.Clear();
        gridView.GroupDescriptors.Clear();
        gridView.FilterDescriptors.Clear();
       }
      }

      public object InitializeValue(CustomPropertyInfo customPropertyInfo, object context)
      {
       return null;
      }

      public object ProvideValue(CustomPropertyInfo customPropertyInfo, object context)
      {
       RadGridView gridView = context as RadGridView;
       if (customPropertyInfo.Name == "Columns")
       {
        // create proxies for all of the columns and save only specific properties
        List<ColumnProxy> proxies = new List<ColumnProxy>();
        foreach (GridViewColumn column in gridView.Columns)
        {
         proxies.Add(new ColumnProxy()
         {
          UniqueName = column.UniqueName,
          Header = column.Header.ToString(),
          DisplayOrder = column.DisplayIndex,
          Width = column.Width,
         });
        }
        return proxies;
       }
       else if (customPropertyInfo.Name == "SortDescriptors")
       {
        // create proxies for all of the sort descriptors and save only specific properties
        List<SortDescriptorProxy> proxies = new List<SortDescriptorProxy>();
        foreach (ColumnSortDescriptor descriptor in gridView.SortDescriptors)
        {
         proxies.Add(new SortDescriptorProxy()
         {
          ColumnUniqueName = descriptor.Column.UniqueName,
          SortDirection = descriptor.SortDirection,
         });
        }
        return proxies;
       }
       else if (customPropertyInfo.Name == "GroupDescriptors")
       {
        // create proxies for all of the group descriptors and save only specific properties
        List<GroupDescriptorProxy> proxies = new List<GroupDescriptorProxy>();
        foreach (ColumnGroupDescriptor descriotor in gridView.GroupDescriptors)
        {
         proxies.Add(new GroupDescriptorProxy()
         {
          ColumnUniqueName = descriotor.Column.UniqueName,
          SortDirection = descriotor.SortDirection,
         });
        }
        return proxies;
       }
       else if (customPropertyInfo.Name == "FilterDescriptors")
       {
        List<FilterSetting> settings = new List<FilterSetting>();

        foreach (GridViewDataColumn column in gridView.Columns
         .OfType<GridViewDataColumn>()
         .Where(column => column.ColumnFilterDescriptor.IsActive))
        {
         FilterSetting setting = new FilterSetting();

         setting.ColumnUniqueName = column.UniqueName;

         if (column.ColumnFilterDescriptor.FieldFilter.Filter1.IsActive)
         {
          setting.Filter1 = new FilterDescriptorProxy();
          setting.Filter1.Operator = column.ColumnFilterDescriptor.FieldFilter.Filter1.Operator;
          setting.Filter1.Value = column.ColumnFilterDescriptor.FieldFilter.Filter1.Value;
          setting.Filter1.IsCaseSensitive = column.ColumnFilterDescriptor.FieldFilter.Filter1.IsCaseSensitive;
         }

         if (column.ColumnFilterDescriptor.FieldFilter.Filter2.IsActive)
         {
          setting.Filter2 = new FilterDescriptorProxy();
          setting.Filter2.Operator = column.ColumnFilterDescriptor.FieldFilter.Filter2.Operator;
          setting.Filter2.Value = column.ColumnFilterDescriptor.FieldFilter.Filter2.Value;
          setting.Filter2.IsCaseSensitive = column.ColumnFilterDescriptor.FieldFilter.Filter2.IsCaseSensitive;
         }

         foreach (object distinctValue in column.ColumnFilterDescriptor.DistinctFilter.DistinctValues)
         {
          setting.SelectedDistinctValues.Add(distinctValue);
         }

         settings.Add(setting);
        }

        return settings;
       }

       return null;
      }

      public void RestoreValue(CustomPropertyInfo customPropertyInfo, object context, object value)
      {
       RadGridView gridView = context as RadGridView;
       if (customPropertyInfo.Name == "Columns")
       {
        List<ColumnProxy> savedProxies = value as List<ColumnProxy>;

        // restore properties on the saved columns:
        foreach (ColumnProxy proxy in savedProxies)
        {
         GridViewColumn column = this.GetColumnInstance(gridView, proxy.UniqueName);
         if (column != null)
         {
          column.DisplayIndex = proxy.DisplayOrder;
          column.Header = proxy.Header;
          column.Width = proxy.Width;
         }
        }
       }
       else if (customPropertyInfo.Name == "SortDescriptors")
       {
        gridView.SortDescriptors.Clear();
        List<SortDescriptorProxy> savedProxies = value as List<SortDescriptorProxy>;

        // restore properties on the saved sort descriptors:
        foreach (SortDescriptorProxy proxy in savedProxies)
        {
         GridViewColumn column = this.GetColumnInstance(gridView, proxy.ColumnUniqueName);
         gridView.SortDescriptors.Add(new ColumnSortDescriptor() { Column = column, SortDirection = proxy.SortDirection });
        }
       }
       else if (customPropertyInfo.Name == "GroupDescriptors")
       {
        gridView.GroupDescriptors.Clear();
        List<GroupDescriptorProxy> savedProxies = value as List<GroupDescriptorProxy>;

        // restore properties on the saved group descriptors:
        foreach (GroupDescriptorProxy proxy in savedProxies)
        {
         GridViewColumn column = this.GetColumnInstance(gridView, proxy.ColumnUniqueName);
         gridView.GroupDescriptors.Add(new ColumnGroupDescriptor() { Column = column, SortDirection = proxy.SortDirection });
        }
       }
       else if (customPropertyInfo.Name == "FilterDescriptors")
       {
        gridView.FilterDescriptors.SuspendNotifications();

        foreach (var c in gridView.Columns)
        {
         if (c.ColumnFilterDescriptor.IsActive)
         {
          c.ClearFilters();
         }
        }

        List<FilterSetting> settings = value as List<FilterSetting>;

        foreach (FilterSetting setting in settings)
        {
         GridViewDataColumn column = gridView.Columns
          .OfType<GridViewDataColumn>()
          .Single(c => c.UniqueName == setting.ColumnUniqueName);

         if (column != null)
         {
          IColumnFilterDescriptor cfd = column.ColumnFilterDescriptor;

          if (setting.Filter1 != null)
          {
           cfd.FieldFilter.Filter1.Operator = setting.Filter1.Operator;
           cfd.FieldFilter.Filter1.Value = setting.Filter1.Value;
           cfd.FieldFilter.Filter1.IsCaseSensitive = setting.Filter1.IsCaseSensitive;
          }

          if (setting.Filter2 != null)
          {
           cfd.FieldFilter.Filter2.Operator = setting.Filter2.Operator;
           cfd.FieldFilter.Filter2.Value = setting.Filter2.Value;
           cfd.FieldFilter.Filter2.IsCaseSensitive = setting.Filter2.IsCaseSensitive;
          }

          foreach (object distinctValue in setting.SelectedDistinctValues)
          {
           cfd.DistinctFilter.AddDistinctValue(distinctValue);
          }
         }
        }

        gridView.FilterDescriptors.ResumeNotifications();
       }
      }

      private GridViewColumn GetColumnInstance(RadGridView gridView, string uniqueName)
      {
       foreach (GridViewColumn column in gridView.Columns)
       {
        if (column.UniqueName == uniqueName)
         return column;
       }
       return null;
      }
     }

     //====================================================================================
     //
     //====================================================================================
        public class ColumnProxy
        {
            public string UniqueName { get; set; }
            public int DisplayOrder { get; set; }
            public string Header { get; set; }
            public GridViewLength Width { get; set; }
        }

        public class SortDescriptorProxy
        {
            public string ColumnUniqueName { get; set; }
            public ListSortDirection SortDirection { get; set; }
        }

        public class GroupDescriptorProxy
        {
            public string ColumnUniqueName { get; set; }
            public ListSortDirection? SortDirection { get; set; }
        }

        public class FilterDescriptorProxy
        {
            public FilterOperator Operator { get; set; }
            public object Value { get; set; }
            public bool IsCaseSensitive { get; set; }
        }

        public class FilterSetting
        {
      public string ColumnUniqueName { get; set; }
      
      List<object> _SelectedDistinctValues;
           
      public List<object> SelectedDistinctValues
            {
                get
                {
                    if (_SelectedDistinctValues == null)
                    {
                        _SelectedDistinctValues = new List<object>();
                    }
                    return _SelectedDistinctValues;
                }
            }

            FilterDescriptorProxy _Filter1;
            public FilterDescriptorProxy Filter1
            {
                get
                {
                    return _Filter1;
                }
                set
                {
                    _Filter1 = value;
                }
            }

            FilterDescriptorProxy _Filter2;
            public FilterDescriptorProxy Filter2
            {
                get
                {
                    return _Filter2;
                }
                set
                {
                    _Filter2 = value;
                }
            }
        }

        //====================================================================================
        //
        //====================================================================================
        public class RichTextBoxCustomPropertyProvider : ICustomPropertyProvider
        {
            #region ICustomPropertyProvider Members
            public CustomPropertyInfo[] GetCustomProperties()
            {
                // Create two custom properties to serialize the RichTextBox properties and content
                return new CustomPropertyInfo[]
                    {
                        new CustomPropertyInfo("Content", typeof(string)),
                        new CustomPropertyInfo("AcceptsReturn", typeof(bool)),
                    };
            }

            public void InitializeObject(object context)
            {

            }

            public object InitializeValue(CustomPropertyInfo customPropertyInfo, object context)
            {
                return null;
            }

            public object ProvideValue(CustomPropertyInfo customPropertyInfo, object context)
            {
                RadRichTextBox owner = context as RadRichTextBox;
                if (customPropertyInfo.Name == "Content")
                {
                    TxtFormatProvider provider = new TxtFormatProvider();
                    string content = provider.Export(owner.Document);
                    return content;
                }
                else
                {
                    return this.GetValueSafely(customPropertyInfo.Name, owner);
                }
            }

            private object GetValueSafely(string propertyName, RadRichTextBox owner)
            {
                PropertyInfo info = owner.GetType().GetProperty(propertyName);
                if (info != null)
                {
                    return info.GetValue(owner, null);
                }
                else
                    throw new Exception();
            }

            private void SetValueSafely(string propertyName, object value, RadRichTextBox owner)
            {
                PropertyInfo info = owner.GetType().GetProperty(propertyName);
                if (info != null)
                {
                    info.SetValue(owner, value, null);
                }
                else
                    throw new Exception();
            }

            public void RestoreValue(CustomPropertyInfo customPropertyInfo, object context, object value)
            {
                RadRichTextBox owner = context as RadRichTextBox;
                if (customPropertyInfo.Name == "Content")
                {
                    TxtFormatProvider provider = new TxtFormatProvider();
                    owner.Document = provider.Import(value.ToString());
                }
                else
                {
                    this.SetValueSafely(customPropertyInfo.Name, value, owner);
                }
            }
            #endregion
        }

        //====================================================================================
        //
        //====================================================================================
        public class PaneProxy
        {
            public object Content { get; set; }
        }
    }

    //====================================================================================

    // Author.......: Alain Gosselin

    // Creation date: 2011-10-12

    // Fonction.....: Permit to serialize an object and save or restore his state.

    //====================================================================================

    // Date Prg TT# Details

    // ---------- ---- ------ ------------------------------------------------------------

    //

    //====================================================================================

    using

     

    System;

    using

     

    System.Collections.Generic;

    using

     

    System.ComponentModel;

    using

     

    System.IO;

    using

     

    System.Linq;

    using

     

    System.Reflection;

    using

     

    System.Text;

    using

     

    Telerik.Windows.Controls;

    using

     

    Telerik.Windows.Controls.GridView;

    using

     

    Telerik.Windows.Data;

    using

     

    Telerik.Windows.Documents.FormatProviders.Txt;

    using

     

    Telerik.Windows.Persistence;

    using

     

    Telerik.Windows.Persistence.Services;

    using

     

    Telerik.Windows.Persistence.Storage;

    using

     

    Telerik.Windows.Zip;

    using

     

    com.christiegrp.Neuron.Client;

    using

     

    com.ChristieGrp.Infrastructure;

    namespace

     

    com.christiegrp.Neuron.ClientApplication

    {

    static public class PersistenceStorage

    {

    #region

     

    Public methods.

    /// <summary>

    /// Set a StorageId before Loading/Saving a control and removing it's StorageId after the action was taken.

    /// The file location is "$APPDATA\IsolatedStorage\..."

    /// </summary>

    /// <param name="pPersistenceAction">Load/Save</param>

    /// <param name="pObjectToPersist">Object to persist.</param>

    /// <param name="pStorageId">StorageId of the object to persist. Null mean that a custom StorageId will be use.</param>

    /// <param name="pErrorMessage">Error received during the persistence.</param>

    /// <returns>true if successfull otherwise false</returns>

    static public bool Persist(PersistenceAction pPersistenceAction, System.Windows.DependencyObject pObjectToPersist, string pStorageId, out string pErrorMessage)

    {

    bool result = false;

    pErrorMessage =

    string.Empty;

    if (pObjectToPersist != null)

    {

    // Validate if we need to generate a custom StorageId.

    if (string.IsNullOrEmpty(pStorageId))

    {

    pStorageId = GetCustomStorageId(pObjectToPersist);

    }

    try

    {

    PersistenceManager.SetStorageId(pObjectToPersist, pStorageId);

    result = Persist(pPersistenceAction,

    out pErrorMessage);

    }

    finally

    {

    pObjectToPersist.ClearValue(

    PersistenceManager.StorageIdProperty);

    }

    }

    return result;

    }

    /// <summary>

    /// Load/Save all controls that contain "telerik:PersistenceManager.StorageId="..."

    /// The file location is "$APPDATA\IsolatedStorage\..."

    /// </summary>

    /// <param name="pPersistenceAction">Load/Save</param>

    /// <param name="pErrorMessage">Error received during the persistence.</param>

    /// <returns>true if successfull otherwise false</returns>

    static public bool Persist(PersistenceAction pPersistenceAction, out string pErrorMessage)

    {

    pErrorMessage =

    string.Empty;

    PersistenceManager manager = new PersistenceManager();

    manager.PropertyPersisting +=

    new Telerik.Windows.Persistence.Events.PropertyPersistingEventHandler(manager_PropertyPersisting);

    IsolatedStorageProvider storage = new IsolatedStorageProvider(manager);

    try

    {

    try

    {

    if (pPersistenceAction == PersistenceAction.Load)

    {

    storage.LoadFromStorage();

    // TODO CHECK

    }

    else if (pPersistenceAction == PersistenceAction.Save)

    {

    storage.SaveToStorage();

    // TODO CHECK

    }

    return true;

    }

    catch (Exception ex)

    {

    GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    tracingTool.Log(

    GclLogger.Level.Error, "PERST001", "Error occured during '{0}' file. Message: {1}", pPersistenceAction.ToString(), ex.ToString());

    pErrorMessage = ex.Message;

    return false;

    }

    }

    finally

    {

    manager.PropertyPersisting +=

    new Telerik.Windows.Persistence.Events.PropertyPersistingEventHandler(manager_PropertyPersisting);

    }

    }

    /// <summary>

    /// Load/Save from/to stream object.

    /// </summary>

    /// <param name="pDataSource">If different from null, we persist load/save from/in database.</param>

    /// <param name="pObject">Object to load/save.</param>

    /// <param name="pStream">Stream that contain the serialized object. Object content is ignored if pDatabaseStorage is true.</param>

    /// <param name="pPersistenceAction">Load/Save</param>

    /// <param name="pErrorMessage">Error received during the persistence.</param>

    /// <returns></returns>

    static public bool Persist(NeuronDataSource pDataSource, object pObject, ref Stream pStream, PersistenceAction pPersistenceAction, out string pErrorMessage)

    {

    // TODO: Compress/Uncompress the stream before save/load to/from database.

    mResult =

    true;

    pErrorMessage =

    string.Empty;

    PersistenceManager manager = new PersistenceManager();

    manager.PersistenceError +=

    new Telerik.Windows.Persistence.Events.PersistenceErrorEventHandler(manager_PersistenceError);

    manager.PropertyPersisting +=

    new Telerik.Windows.Persistence.Events.PropertyPersistingEventHandler(manager_PropertyPersisting);

    try

    {

    if (pPersistenceAction == PersistenceAction.Load)

    {

    if (pObject != null && pStream != null)

    {

    pStream.Position = 0L;

    // TO CHECK

    manager.Load(pObject, pStream);

    // TO CHECK

    }

    else

    {

    pErrorMessage =

    "pObject and/or pStream cannot be null.";

    GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    tracingTool.Log(

    GclLogger.Level.Error, "PERST005", "Error occured during '{0}' stream. Message: {1}", pPersistenceAction.ToString(), pErrorMessage);

    mResult =

    false;

    }

    }

    else if (pPersistenceAction == PersistenceAction.Save)

    {

    if (pObject != null)

    {

    pStream = manager.Save(pObject);

    // TO CHECK

    }

    else

    {

    pErrorMessage =

    "pObject cannot be null.";

    GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    tracingTool.Log(

    GclLogger.Level.Error, "PERST006", "Error occured during '{0}' stream. Message: {1}", pPersistenceAction.ToString(), pErrorMessage);

    mResult =

    false;

    }

    }

    }

    catch (Exception ex)

    {

    GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    tracingTool.Log(

    GclLogger.Level.Error, "PERST002", "Error occured during '{0}' stream. Message: {1}", pPersistenceAction.ToString(), ex.Message.ToString());

    pErrorMessage = ex.Message;

    mResult =

    false;

    }

    finally

    {

    manager.PersistenceError -=

    new Telerik.Windows.Persistence.Events.PersistenceErrorEventHandler(manager_PersistenceError);

    manager.PropertyPersisting -=

    new Telerik.Windows.Persistence.Events.PropertyPersistingEventHandler(manager_PropertyPersisting);

    pErrorMessage = mErrorMessage;

    }

    return mResult;

    }

    /// <summary>

    /// Deleting all persistence files.

    /// </summary>

    /// <param name="pErrorMessage">Error receiving during deleting files.</param>

    static public void DeleteAll(out string pErrorMessage)

    {

    pErrorMessage =

    string.Empty;

    IsolatedStorageProvider iso = new IsolatedStorageProvider();

    try

    {

    iso.DeleteIsolatedStorageFiles();

    }

    catch (Exception ex)

    {

    GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    tracingTool.Log(

    GclLogger.Level.Error, "PERST007", "Error occured during deleting files. Message: {0}", ex.Message.ToString());

    pErrorMessage = ex.Message;

    }

    }

    /// <summary>

    /// Generate a custom StorageId.

    /// </summary>

    /// <param name="pObjectToPersist"></param>

    /// <returns></returns>

    static public string GetCustomStorageId(System.Windows.DependencyObject pObjectToPersist)

    {

    string customStorageId = string.Empty;

    if (pObjectToPersist != null)

    {

    Assembly assembly = pObjectToPersist.GetType().Assembly;

    customStorageId = assembly.GetName().Name +

    "." + pObjectToPersist.GetType().Name;

    }

    return customStorageId;

    }

    #endregion

    #region

     

    Private methods.

    /// <summary>

    ///

    /// </summary>

    /// <param name="input"></param>

    /// <param name="output"></param>

    private static void copyTo(Stream input, Stream output)

    {

    byte[] buffer = new byte[32768]; // Fairly arbitrary size

    int bytesRead;

    while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)

    {

    output.Write(buffer, 0, bytesRead);

    }

    }

    /// <summary>

    /// Uncompress a stream.

    /// </summary>

    /// <param name="pStreamIn"></param>

    /// <param name="pStreamOut"></param>

    /// <returns></returns>

    private static bool uncompressStream(MemoryStream pStreamIn, out Stream pStreamOut)

    {

    pStreamOut =

    null;

    try

    {

    //TODO: Uncompress stream

    return true;

    }

    catch (Exception ex)

    {

    GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    tracingTool.Log(

    GclLogger.Level.Error, "PERST003", "{0}", ex.Message.ToString());

    mErrorMessage = ex.Message;

    return false;

    }

    }

    /// <summary>

    /// Compream a stream.

    /// </summary>

    /// <param name="pStreamIn"></param>

    /// <param name="pStreamOut"></param>

    /// <returns></returns>

    private static bool compressStream(ref Stream pStreamIn, out MemoryStream pStreamOut)

    {

    pStreamOut =

    null;

    try

    {

    pStreamOut =

    new MemoryStream();

    ZipPackage package = ZipPackage.Create(pStreamOut);

    package.AddStream(pStreamIn,

    "WindowPersistedData");

    pStreamIn.Position = 0L;

    return true;

    }

    catch (Exception ex)

    {

    GclLogger tracingTool = GclLogger.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

    tracingTool.Log(

    GclLogger.Level.Error, "PERST004", "{0}", ex.Message.ToString());

    mErrorMessage = ex.Message;

    return false;

    }

    }

    /// <summary>

    /// Event triggered when the stream persistence didn't worked.

    /// </summary>

    /// <param name="sender"></param>

    /// <param name="e"></param>

    static void manager_PersistenceError(object sender, Telerik.Windows.Persistence.Events.PersistenceErrorEventArgs e)

    {

    mErrorMessage = e.Exception.Message;

    mResult =

    false;

    throw new NotImplementedException();

    }

    /// <summary>

    /// This event is used to prevent any BroderBrush to have a transparent color when we persist an object.

    /// </summary>

    /// <param name="sender"></param>

    /// <param name="e"></param>

    static void manager_PropertyPersisting(object sender, Telerik.Windows.Persistence.Events.PersistingPropertyEventArgs e)

    {

    //Not needed since version 2011.3.1116.35 of Telerik

    //if (e.Name == "BorderBrush")

    // e.Cancel = true;

    }

    #endregion

    #region

     

    Private declarations.

    /// <summary>

    /// Persist a streaming object into or from database.

    /// </summary>

    /// <param name="pAction"></param>

    /// <param name="pStream"></param>

    /// <returns></returns>

    static private Boolean databaseStorage(PersistenceAction pAction, ref MemoryStream pStream)

    {

    Boolean result = true;

    if (pAction == PersistenceAction.Load)

    {

    throw new NotImplementedException();

    }

    else if (pAction == PersistenceAction.Save)

    {

    throw new NotImplementedException();

    }

    return result;

    }

    #endregion

    #region

     

    Enumerators.

    public enum PersistenceAction { Load, Save }

    #endregion

    #region

     

    Private declarations.

    static private string mErrorMessage;

    static private bool mResult;

    #endregion

    }

     

    //====================================================================================

    //

    //====================================================================================

    public class DockingCustomPropertyProvider : ICustomPropertyProvider

    {

    public CustomPropertyInfo[] GetCustomProperties()

    {

    // Create two custom properties to serialize the Layout of the RadDocking and the Content of the RadPanes

    return new CustomPropertyInfo[]

    {

    new CustomPropertyInfo("Layout", typeof(string)),

    new CustomPropertyInfo("Content", typeof(List<PaneProxy>)) { AllowCreateInstance =false, TreatAsUI = false},

    };

    }

    public void InitializeObject(object context)

    {

    }

    public object InitializeValue(CustomPropertyInfo customPropertyInfo, object context)

    {

    if (customPropertyInfo.Name == "Content")

    {

    // See remarks in ProvideValue method:

    // provide the values on which the saved properties will be restored upon

    RadDocking docking = context as RadDocking;

    List<PaneProxy> proxies = new List<PaneProxy>();

    foreach (RadPane pane in this.GetOrderedPanes(docking).ToArray())

    {

    proxies.Add(

    new PaneProxy() { Content = pane.Content });

    }

    return proxies;

    }

    return null;

    }

    public object ProvideValue(CustomPropertyInfo customPropertyInfo, object context)

    {

    RadDocking docking = context as RadDocking;

    if (customPropertyInfo.Name == "Layout")

    {

    // let the RadDocking save the layout of the Panes:

    return this.SaveLayoutAsString(docking);

    }

    else if (customPropertyInfo.Name == "Content")

    {

    // create proxies for all of the Panes and save their content

    IEnumerable<RadPane> panes = this.GetOrderedPanes(docking);

    List<PaneProxy> proxies = new List<PaneProxy>();

    foreach (RadPane pane in panes)

    {

    proxies.Add(

    new PaneProxy() { Content = pane.Content });

    }

    return proxies;

    }

    return null;

    }

    public void RestoreValue(CustomPropertyInfo customPropertyInfo, object context, object value)

    {

    if (customPropertyInfo.Name == "Layout")

    {

    // let the RadDocking load the layout of the RadPanes

    this.LoadLayoutFromString(value.ToString(), context as RadDocking);

    }

    else if (customPropertyInfo.Name == "Content")

    {

    // the PersistenceManager does not re-create UI elements - in this case the Content of the RadPane.

    // So, instead of providing a value on which the saved properties will be applied,

    // we will use the InitializeValue method.

    }

    }

    private string SaveLayoutAsString(RadDocking instance)

    {

    MemoryStream stream = new MemoryStream();

    instance.SaveLayout(stream);

    stream.Seek(0,

    SeekOrigin.Begin);

    StreamReader reader = new StreamReader(stream);

    return reader.ReadToEnd();

    }

    private void LoadLayoutFromString(string xml, RadDocking instance)

    {

    using (Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(xml)))

    {

    stream.Seek(0,

    SeekOrigin.Begin);

    instance.LoadLayout(stream);

    }

    }

    private IEnumerable<RadPane> GetOrderedPanes(RadDocking docking)

    {

    // get the RadPanes always in the same order:

    RadPane[] array = docking.Panes.ToArray();

    Array.Sort(array, new RadPaneComparer());

    return array;

    }

    }

    public class RadPaneComparer : IComparer<RadPane>

    {

    int IComparer<RadPane>.Compare(RadPane x, RadPane y)

    {

    // compare RadPanes by their serialization tag:

    string xSerializationTag = RadDocking.GetSerializationTag(x);

    string ySerializationTag = RadDocking.GetSerializationTag(y);

    return xSerializationTag.CompareTo(ySerializationTag);

    }

    }

    //====================================================================================

    //

    //====================================================================================

    public class GridViewCustomPropertyProvider : ICustomPropertyProvider

    {

    public CustomPropertyInfo[] GetCustomProperties()

    {

    // Create three custom properties to persist the Columns, Sorting and Group descriptors using proxy objects

    return new CustomPropertyInfo[]

    {

    new CustomPropertyInfo("Columns", typeof(List<ColumnProxy>)),

    new CustomPropertyInfo("SortDescriptors", typeof(List<SortDescriptorProxy>)),

    new CustomPropertyInfo("FilterDescriptors", typeof(List<FilterSetting>)),

    new CustomPropertyInfo("GroupDescriptors", typeof(List<GroupDescriptorProxy>)),

    };

    }

    public void InitializeObject(object context)

    {

    if (context is RadGridView)

    {

    RadGridView gridView = context as RadGridView;

    gridView.SortDescriptors.Clear();

    gridView.GroupDescriptors.Clear();

    gridView.FilterDescriptors.Clear();

    }

    }

    public object InitializeValue(CustomPropertyInfo customPropertyInfo, object context)

    {

    return null;

    }

    public object ProvideValue(CustomPropertyInfo customPropertyInfo, object context)

    {

    RadGridView gridView = context as RadGridView;

    if (customPropertyInfo.Name == "Columns")

    {

    // create proxies for all of the columns and save only specific properties

    List<ColumnProxy> proxies = new List<ColumnProxy>();

    foreach (GridViewColumn column in gridView.Columns)

    {

    proxies.Add(

    new ColumnProxy()

    {

    UniqueName = column.UniqueName,

    Header = column.Header.ToString(),

    DisplayOrder = column.DisplayIndex,

    Width = column.Width,

    });

    }

    return proxies;

    }

    else if (customPropertyInfo.Name == "SortDescriptors")

    {

    // create proxies for all of the sort descriptors and save only specific properties

    List<SortDescriptorProxy> proxies = new List<SortDescriptorProxy>();

    foreach (ColumnSortDescriptor descriptor in gridView.SortDescriptors)

    {

    proxies.Add(

    new SortDescriptorProxy()

    {

    ColumnUniqueName = descriptor.Column.UniqueName,

    SortDirection = descriptor.SortDirection,

    });

    }

    return proxies;

    }

    else if (customPropertyInfo.Name == "GroupDescriptors")

    {

    // create proxies for all of the group descriptors and save only specific properties

    List<GroupDescriptorProxy> proxies = new List<GroupDescriptorProxy>();

    foreach (ColumnGroupDescriptor descriotor in gridView.GroupDescriptors)

    {

    proxies.Add(

    new GroupDescriptorProxy()

    {

    ColumnUniqueName = descriotor.Column.UniqueName,

    SortDirection = descriotor.SortDirection,

    });

    }

    return proxies;

    }

    else if (customPropertyInfo.Name == "FilterDescriptors")

    {

    List<FilterSetting> settings = new List<FilterSetting>();

    foreach (GridViewDataColumn column in gridView.Columns

    .OfType<

    GridViewDataColumn>()

    .Where(column => column.ColumnFilterDescriptor.IsActive))

    {

    FilterSetting setting = new FilterSetting();

    setting.ColumnUniqueName = column.UniqueName;

    if (column.ColumnFilterDescriptor.FieldFilter.Filter1.IsActive)

    {

    setting.Filter1 =

    new FilterDescriptorProxy();

    setting.Filter1.Operator = column.ColumnFilterDescriptor.FieldFilter.Filter1.Operator;

    setting.Filter1.Value = column.ColumnFilterDescriptor.FieldFilter.Filter1.Value;

    setting.Filter1.IsCaseSensitive = column.ColumnFilterDescriptor.FieldFilter.Filter1.IsCaseSensitive;

    }

    if (column.ColumnFilterDescriptor.FieldFilter.Filter2.IsActive)

    {

    setting.Filter2 =

    new FilterDescriptorProxy();

    setting.Filter2.Operator = column.ColumnFilterDescriptor.FieldFilter.Filter2.Operator;

    setting.Filter2.Value = column.ColumnFilterDescriptor.FieldFilter.Filter2.Value;

    setting.Filter2.IsCaseSensitive = column.ColumnFilterDescriptor.FieldFilter.Filter2.IsCaseSensitive;

    }

    foreach (object distinctValue in column.ColumnFilterDescriptor.DistinctFilter.DistinctValues)

    {

    setting.SelectedDistinctValues.Add(distinctValue);

    }

    settings.Add(setting);

    }

    return settings;

    }

    return null;

    }

    public void RestoreValue(CustomPropertyInfo customPropertyInfo, object context, object value)

    {

    RadGridView gridView = context as RadGridView;

    if (customPropertyInfo.Name == "Columns")

    {

    List<ColumnProxy> savedProxies = value as List<ColumnProxy>;

    // restore properties on the saved columns:

    foreach (ColumnProxy proxy in savedProxies)

    {

    GridViewColumn column = this.GetColumnInstance(gridView, proxy.UniqueName);

    if (column != null)

    {

    column.DisplayIndex = proxy.DisplayOrder;

    column.Header = proxy.Header;

    column.Width = proxy.Width;

    }

    }

    }

    else if (customPropertyInfo.Name == "SortDescriptors")

    {

    gridView.SortDescriptors.Clear();

    List<SortDescriptorProxy> savedProxies = value as List<SortDescriptorProxy>;

    // restore properties on the saved sort descriptors:

    foreach (SortDescriptorProxy proxy in savedProxies)

    {

    GridViewColumn column = this.GetColumnInstance(gridView, proxy.ColumnUniqueName);

    gridView.SortDescriptors.Add(

    new ColumnSortDescriptor() { Column = column, SortDirection = proxy.SortDirection });

    }

    }

    else if (customPropertyInfo.Name == "GroupDescriptors")

    {

    gridView.GroupDescriptors.Clear();

    List<GroupDescriptorProxy> savedProxies = value as List<GroupDescriptorProxy>;

    // restore properties on the saved group descriptors:

    foreach (GroupDescriptorProxy proxy in savedProxies)

    {

    GridViewColumn column = this.GetColumnInstance(gridView, proxy.ColumnUniqueName);

    gridView.GroupDescriptors.Add(

    new ColumnGroupDescriptor() { Column = column, SortDirection = proxy.SortDirection });

    }

    }

    else if (customPropertyInfo.Name == "FilterDescriptors")

    {

    gridView.FilterDescriptors.SuspendNotifications();

    foreach (var c in gridView.Columns)

    {

    if (c.ColumnFilterDescriptor.IsActive)

    {

    c.ClearFilters();

    }

    }

    List<FilterSetting> settings = value as List<FilterSetting>;

    foreach (FilterSetting setting in settings)

    {

    GridViewDataColumn column = gridView.Columns

    .OfType<

    GridViewDataColumn>()

    .Single(c => c.UniqueName == setting.ColumnUniqueName);

    if (column != null)

    {

    IColumnFilterDescriptor cfd = column.ColumnFilterDescriptor;

    if (setting.Filter1 != null)

    {

    cfd.FieldFilter.Filter1.Operator = setting.Filter1.Operator;

    cfd.FieldFilter.Filter1.Value = setting.Filter1.Value;

    cfd.FieldFilter.Filter1.IsCaseSensitive = setting.Filter1.IsCaseSensitive;

    }

    if (setting.Filter2 != null)

    {

    cfd.FieldFilter.Filter2.Operator = setting.Filter2.Operator;

    cfd.FieldFilter.Filter2.Value = setting.Filter2.Value;

    cfd.FieldFilter.Filter2.IsCaseSensitive = setting.Filter2.IsCaseSensitive;

    }

    foreach (object distinctValue in setting.SelectedDistinctValues)

    {

    cfd.DistinctFilter.AddDistinctValue(distinctValue);

    }

    }

    }

    gridView.FilterDescriptors.ResumeNotifications();

    }

    }

    private GridViewColumn GetColumnInstance(RadGridView gridView, string uniqueName)

    {

    foreach (GridViewColumn column in gridView.Columns)

    {

    if (column.UniqueName == uniqueName)

    return column;

    }

    return null;

    }

    }

    //====================================================================================

    //

    //====================================================================================

    public class ColumnProxy

    {

    public string UniqueName { get; set; }

    public int DisplayOrder { get; set; }

    public string Header { get; set; }

    public GridViewLength Width { get; set; }

    }

    public class SortDescriptorProxy

    {

    public string ColumnUniqueName { get; set; }

    public ListSortDirection SortDirection { get; set; }

    }

    public class GroupDescriptorProxy

    {

    public string ColumnUniqueName { get; set; }

    public ListSortDirection? SortDirection { get; set; }

    }

    public class FilterDescriptorProxy

    {

    public FilterOperator Operator { get; set; }

    public object Value { get; set; }

    public bool IsCaseSensitive { get; set; }

    }

    public class FilterSetting

    {

    public string ColumnUniqueName { get; set; }

    List<object> _SelectedDistinctValues;

    public List<object> SelectedDistinctValues

    {

    get

    {

    if (_SelectedDistinctValues == null)

    {

    _SelectedDistinctValues =

    new List<object>();

    }

    return _SelectedDistinctValues;

    }

    }

    FilterDescriptorProxy _Filter1;

    public FilterDescriptorProxy Filter1

    {

    get

    {

    return _Filter1;

    }

    set

    {

    _Filter1 =

    value;

    }

    }

    FilterDescriptorProxy _Filter2;

    public FilterDescriptorProxy Filter2

    {

    get

    {

    return _Filter2;

    }

    set

    {

    _Filter2 =

    value;

    }

    }

    }

    //====================================================================================

    //

    //====================================================================================

    public class RichTextBoxCustomPropertyProvider : ICustomPropertyProvider

    {

    #region

     

    ICustomPropertyProvider Members

    public CustomPropertyInfo[] GetCustomProperties()

    {

    // Create two custom properties to serialize the RichTextBox properties and content

    return new CustomPropertyInfo[]

    {

    new CustomPropertyInfo("Content", typeof(string)),

    new CustomPropertyInfo("AcceptsReturn", typeof(bool)),

    };

    }

    public void InitializeObject(object context)

    {

    }

    public object InitializeValue(CustomPropertyInfo customPropertyInfo, object context)

    {

    return null;

    }

    public object ProvideValue(CustomPropertyInfo customPropertyInfo, object context)

    {

    RadRichTextBox owner = context as RadRichTextBox;

    if (customPropertyInfo.Name == "Content")

    {

    TxtFormatProvider provider = new TxtFormatProvider();

    string content = provider.Export(owner.Document);

    return content;

    }

    else

    {

    return this.GetValueSafely(customPropertyInfo.Name, owner);

    }

    }

    private object GetValueSafely(string propertyName, RadRichTextBox owner)

    {

    PropertyInfo info = owner.GetType().GetProperty(propertyName);

    if (info != null)

    {

    return info.GetValue(owner, null);

    }

    else

    throw new Exception();

    }

    private void SetValueSafely(string propertyName, object value, RadRichTextBox owner)

    {

    PropertyInfo info = owner.GetType().GetProperty(propertyName);

    if (info != null)

    {

    info.SetValue(owner, value,

    null);

    }

    else

    throw new Exception();

    }

    public void RestoreValue(CustomPropertyInfo customPropertyInfo, object context, object value)

    {

    RadRichTextBox owner = context as RadRichTextBox;

    if (customPropertyInfo.Name == "Content")

    {

    TxtFormatProvider provider = new TxtFormatProvider();

    owner.Document = provider.Import(value.ToString());

    }

    else

    {

    this.SetValueSafely(customPropertyInfo.Name, value, owner);

    }

    }

    #endregion

    }

    //====================================================================================

    //

    //====================================================================================

    public class PaneProxy

    {

    public object Content { get; set; }

    }

    }

Back to Top
UI for WPF is Visual Studio 2017 Ready