Click here to Skip to main content
15,884,629 members
Articles / Desktop Programming / WPF

Using Adobe Reader in a WPF app

Rate me:
Please Sign up or sign in to vote.
4.82/5 (13 votes)
13 May 2012CPOL9 min read 127.1K   8.7K   26  
An article in how to adapt the Adobe Reader COM object to play nicely with MVVM
  • ArticleSolution.zip
    • AcrobatViewerMvvm
      • _ReSharper.AcrobatViewerMvvm
        • AspFileDataCache.dat
        • BuildScriptCache
          • .crc
          • .version
          • 0
          • 8
          • 9
            • 4f204499.dat
        • CompletionStatistics
          • Statistics.dat
        • ConditionalNames
          • .crc
          • .version
          • 6
            • 3431049.dat
        • JavaScriptCache
          • .crc
          • .version
          • 6
            • 3431049.dat
        • JbDecompilerCache
        • JbPdbInfo
          • 1581733b103c98919d6c15ed8d88e8de18e5b3f9
          • 257c0fefe5ef692cb3d0130c5885a636a3d07831
          • 478c383b4ec3e0cf6ad8f69e10f370bab6d0c44c
          • 49a441d1fa3cb4a4ae18ecd8c40ed921c2a2144d
          • 666651f563628754a0277aa6f85afba62c6709c6
          • 6dad12bdc38491654b87999ae7534431002f645e
          • 746bd18bb668208726073b1d99caaada596692ac
          • 76ca450247d278bb19413e611c50a8895387baa1
          • 784088619e1e18db4c9df0e7b970d601e928a08c
          • 8e31af12d275d53c658b955ce652e1bdf2c16b49
          • 96a8089b2430f4e51d5f1f3dc1d37903474f707a
          • ab2b2bf407464ad7656ca1803c589d2663b0f9bd
          • adc435cee8fb4bb770e23c92e77d047c92f70fcf
          • b73feb84eef2008de3e7f988baecefc62678072d
          • b8ecf6fb5158242f3539db6e92e4f0d86354e177
          • c0be648e37b321a916d381034289db5609cb82f8
          • c7615be4e7f4f287cca7d75966fc9be659da1039
          • e1bc000ab96a08b8b38428b8b32ac96aba589ec5
          • f36204ac68159cc7ada943f3d34b0f17bff0e371
        • JSTest
          • .crc
          • .version
        • ModuleIds.xml
        • MVC
          • .crc
          • .version
        • NamedArguments
          • .crc
          • .version
          • 5
            • 36a02eba.dat
        • PersistenIdIndex.bin
        • RecentItems
          • RecentFiles.dat
        • Resources
          • .crc
          • .version
          • 8
            • f8c0aef.dat
        • SymbolCache.bin
        • TagPrefixes
          • .crc
          • .version
        • TodoCache
          • .crc
          • .version
          • 9
            • 3773b780.dat
        • TodoItems
          • .crc
          • .version
          • 8
            • f8c0aef.dat
        • WebSymbols
          • .crc
          • .version
        • WordIndex
          • .crc
          • .version
          • 6
            • 3431049.dat
        • XmlIndex
          • Accessibility.xml
            • 59F683E5.bin
            • 870D5A60.bin
            • C7A6AAD7.bin
            • F0D89DC2.bin
          • Microsoft.Build.Framework.3.5.0.0.Nullness.Generated.xml
            • 154573B0.bin
          • Microsoft.Build.Framework.4.0.0.0.Nullness.Generated.xml
            • 91BD6FD3.bin
            • 95B01A72.bin
          • Microsoft.Build.Framework.xml
            • 5B4D04B5.bin
          • Microsoft.Build.Tasks.v4.0.4.0.0.0.Nullness.Generated.xml
            • 2B844FB2.bin
            • AB623953.bin
          • Microsoft.Build.Tasks.v4.0.xml
            • 390E8A25.bin
          • Microsoft.Build.Utilities.v4.0.4.0.0.0.Nullness.Generated.xml
            • 07D57913.bin
            • F2C154F2.bin
          • Microsoft.Build.Utilities.v4.0.xml
            • 1A2D939D.bin
          • Microsoft.CSharp.2.0.5.0.Nullness.Generated.xml
            • 3477AF71.bin
          • Microsoft.CSharp.4.0.0.0.Nullness.Generated.xml
            • 10F25633.bin
            • 57725E92.bin
          • Microsoft.CSharp.xml
            • 1D407EB8.bin
            • 4DDA1CCA.bin
          • Microsoft.Expression.Interactions.xml
            • BD2A70E5.bin
          • Microsoft.VisualC.xml
            • 2F48D914.bin
            • 90D3ABE6.bin
          • mscorlib.2.0.0.0.Contracts.xml
            • 5B7112C4.bin
          • mscorlib.2.0.0.0.Interfaces.Nullness.Generated.xml
            • 9075ABCC.bin
          • mscorlib.2.0.0.0.Nullness.Generated.xml
            • 84EF6F94.bin
          • mscorlib.2.0.0.0.Pure.xml
            • 1E801D57.bin
          • mscorlib.2.0.5.0.Contracts.xml
            • C330A3C1.bin
          • mscorlib.2.0.5.0.Interfaces.Nullness.Generated.xml
            • 56983509.bin
          • mscorlib.2.0.5.0.Nullness.Generated.xml
            • 63ED2EB1.bin
          • mscorlib.2.0.5.0.Pure.xml
            • 0A810372.bin
          • mscorlib.4.0.0.0.Contracts.xml
            • 07FBF242.bin
            • 0DED0883.bin
          • mscorlib.4.0.0.0.Interfaces.Nullness.Generated.xml
            • 49D94A4A.bin
            • 620DC5CB.bin
          • mscorlib.4.0.0.0.Nullness.Generated.xml
            • 772ECBB3.bin
            • 83DB9ED2.bin
          • mscorlib.4.0.0.0.Pure.xml
            • 6572C670.bin
            • CC017511.bin
          • mscorlib.I18n.xml
            • 366D6FC8.bin
            • 78F91969.bin
          • mscorlib.Nullness.Manual.xml
            • 4066AAC3.bin
            • A029C282.bin
          • mscorlib.ValueFlow.xml
            • 447F1EBE.bin
            • 4E59B0BF.bin
          • mscorlib.xml
            • 05998BE8.bin
            • 743ADB6C.bin
            • 80BFF39E.bin
            • A4A9BDAB.bin
            • CFD54509.bin
            • D6E16D29.bin
          • PresentationCore.3.0.0.0.Nullness.Generated.xml
            • 218F0675.bin
          • PresentationCore.4.0.0.0.Nullness.Generated.xml
            • 6892EAF3.bin
            • CAA67C12.bin
          • PresentationCore.xml
            • 6C0A9723.bin
            • 6EEF5274.bin
            • 6F6FC046.bin
          • PresentationFramework.3.0.0.0.Nullness.Generated.xml
            • C6288D55.bin
          • PresentationFramework.4.0.0.0.Nullness.Generated.xml
            • 1D990672.bin
            • 5BD919D3.bin
          • PresentationFramework.4.0.0.0.Xaml.xml
            • 86321E7A.bin
          • PresentationFramework.Nullness.Manual.xml
            • 541B7CA2.bin
          • PresentationFramework.xml
            • 75940F93.bin
            • B6BE5621.bin
            • EE659224.bin
          • PresentationUI.3.0.0.0.Nullness.Generated.xml
            • 03945BD5.bin
          • PresentationUI.4.0.0.0.Nullness.Generated.xml
            • 5B04D4F2.bin
            • DBA70613.bin
          • PresentationUI.xml
            • 473CEEC1.bin
          • ReachFramework.3.0.0.0.Nullness.Generated.xml
            • 7F683E35.bin
          • ReachFramework.4.0.0.0.Nullness.Generated.xml
            • 257374D2.bin
            • A1074D33.bin
          • ReachFramework.xml
            • 450C246A.bin
            • CF31C018.bin
            • DC23344F.bin
          • SMDiagnostics.3.0.0.0.Nullness.Generated.xml
            • 90006755.bin
          • SMDiagnostics.4.0.0.0.Nullness.Generated.xml
            • 8E9945D3.bin
            • E770E072.bin
          • System.2.0.0.0.Contracts.xml
            • 66A824C4.bin
          • System.2.0.0.0.Nullness.Generated.xml
            • DC3AC194.bin
          • System.2.0.0.0.Pure.xml
            • 1483EF57.bin
          • System.2.0.5.0.Contracts.xml
            • CE67B5C1.bin
          • System.2.0.5.0.Nullness.Generated.xml
            • BB3880B1.bin
          • System.2.0.5.0.Pure.xml
            • 0084D572.bin
          • System.4.0.0.0.Contracts.xml
            • 13330442.bin
            • 7458FC03.bin
          • System.4.0.0.0.Nullness.Generated.xml
            • 5304AF33.bin
            • DB26F0D2.bin
          • System.4.0.0.0.Pure.xml
            • 403889F0.bin
            • C2054711.bin
          • System.Configuration.2.0.0.0.Contracts.xml
            • A5A97A44.bin
          • System.Configuration.2.0.0.0.Nullness.Generated.xml
            • 13D44714.bin
          • System.Configuration.2.0.0.0.Pure.xml
            • FA79D4D7.bin
          • System.Configuration.4.0.0.0.Contracts.xml
            • 523459C2.bin
            • 8AA99CC3.bin
          • System.Configuration.4.0.0.0.Nullness.Generated.xml
            • 12C07652.bin
            • 5C04A9F3.bin
          • System.Configuration.4.0.0.0.Pure.xml
            • A30FD330.bin
            • A7FB2C91.bin
          • System.Configuration.Install.2.0.0.0.Contracts.xml
            • 6810E564.bin
          • System.Configuration.Install.2.0.0.0.Nullness.Generated.xml
            • E1F3E774.bin
          • System.Configuration.Install.4.0.0.0.Contracts.xml
            • 69C465E2.bin
            • F6158D63.bin
          • System.Configuration.Install.4.0.0.0.Nullness.Generated.xml
            • 28353B53.bin
            • 9C0AD4B2.bin
          • System.Configuration.Install.xml
            • 7FB1C71F.bin
          • System.Configuration.xml
            • 092A1070.bin
            • 3BFF1442.bin
            • 51C94CD5.bin
            • C45FA137.bin
          • System.Core.2.0.5.0.Contracts.xml
            • D5B29261.bin
          • System.Core.2.0.5.0.Nullness.Generated.xml
            • 74EC8511.bin
          • System.Core.2.0.5.0.Pure.xml
            • DB1DE692.bin
          • System.Core.3.5.0.0.Contracts.xml
            • EA155060.bin
          • System.Core.3.5.0.0.Nullness.Generated.xml
            • FF82B2F0.bin
          • System.Core.3.5.0.0.Pure.xml
            • 00A63FF3.bin
          • System.Core.4.0.0.0.Contracts.xml
            • 9A26A5E2.bin
            • 9A69C6A3.bin
          • System.Core.4.0.0.0.Nullness.Generated.xml
            • 8E5F4293.bin
            • FEF514B2.bin
          • System.Core.4.0.0.0.Pure.xml
            • 0304D931.bin
            • D7464B10.bin
          • System.Core.LinqTunnel.xml
            • 63F26974.bin
            • 6C84E315.bin
          • System.Core.Nullness.Manual.xml
            • 31BDD0E2.bin
            • 6880D423.bin
          • System.Core.xml
            • 11686E5B.bin
            • 1C6B8C69.bin
            • 9057731E.bin
          • System.Data.2.0.0.0.Contracts.xml
            • 2C88F0E4.bin
          • System.Data.2.0.0.0.Nullness.Generated.xml
            • A6F0E2F4.bin
          • System.Data.2.0.0.0.Pure.xml
            • 6AC59FF7.bin
          • System.Data.4.0.0.0.Contracts.xml
            • 2E3C7162.bin
            • 68A7E423.bin
          • System.Data.4.0.0.0.Nullness.Generated.xml
            • 6107D032.bin
            • 7A169013.bin
          • System.Data.4.0.0.0.Pure.xml
            • 0BED74B1.bin
            • 595BF890.bin
          • System.Data.DataSetExtensions.3.5.0.0.Nullness.Generated.xml
            • 902F79F0.bin
          • System.Data.DataSetExtensions.4.0.0.0.Nullness.Generated.xml
            • 8FA1DBB2.bin
            • DB866913.bin
          • System.Data.DataSetExtensions.I18n.xml
            • 77B72D89.bin
            • B16CE5E8.bin
          • System.Data.DataSetExtensions.xml
            • 4A8BA0A6.bin
            • 561D2A14.bin
          • System.Data.I18n.xml
            • 51BDCCE8.bin
            • C146C209.bin
          • System.Data.OracleClient.2.0.0.0.Nullness.Generated.xml
            • DA1ADAF4.bin
          • System.Data.OracleClient.4.0.0.0.Nullness.Generated.xml
            • 9431C832.bin
            • 9BDAABD3.bin
          • System.Data.OracleClient.xml
            • 27DDCE31.bin
          • System.Data.SqlXml.2.0.0.0.Nullness.Generated.xml
            • 2B849E74.bin
          • System.Data.SqlXml.4.0.0.0.Nullness.Generated.xml
            • B9F432D3.bin
            • E59B8BB2.bin
          • System.Data.SqlXml.xml
            • 0CFF57DB.bin
            • 48CF6F29.bin
            • 9A03804C.bin
            • D561F3EE.bin
          • System.Data.xml
            • 2535F582.bin
            • 7BF6DA70.bin
          • System.Deployment.2.0.0.0.Nullness.Generated.xml
            • CEB490F4.bin
          • System.Deployment.4.0.0.0.Nullness.Generated.xml
            • 88CB7E32.bin
            • B159D593.bin
          • System.Deployment.xml
            • 0AE6B79E.bin
            • 566A1F4B.bin
            • 56CC0FFC.bin
            • CC017739.bin
          • System.Design.2.0.0.0.Nullness.Generated.xml
            • 02690CB4.bin
          • System.Design.4.0.0.0.Nullness.Generated.xml
            • 3D783EF2.bin
            • 97CA2CD3.bin
          • System.Design.xml
            • 66D504B2.bin
          • System.DirectoryServices.2.0.0.0.Nullness.Generated.xml
            • 1B1757F4.bin
          • System.DirectoryServices.4.0.0.0.Nullness.Generated.xml
            • 494E7693.bin
            • D52E4532.bin
          • System.DirectoryServices.Protocols.2.0.0.0.Nullness.Generated.xml
            • 322BEE54.bin
          • System.DirectoryServices.Protocols.4.0.0.0.Nullness.Generated.xml
            • 2865DE92.bin
            • CFA46BF3.bin
          • System.DirectoryServices.Protocols.xml
            • A1B5E32C.bin
          • System.DirectoryServices.xml
            • 14397267.bin
            • 88DA6355.bin
          • System.Drawing.2.0.0.0.Contracts.xml
            • CAD0C484.bin
          • System.Drawing.2.0.0.0.Nullness.Generated.xml
            • 6F279A54.bin
          • System.Drawing.2.0.0.0.Pure.xml
            • 47C5B997.bin
          • System.Drawing.4.0.0.0.Contracts.xml
            • 90ED1C03.bin
            • F7254502.bin
          • System.Drawing.4.0.0.0.Nullness.Generated.xml
            • 283CCF33.bin
            • 65618A92.bin
          • System.Drawing.4.0.0.0.Pure.xml
            • 07B8A9F0.bin
            • E8ED8F51.bin
          • System.Drawing.Design.2.0.0.0.Nullness.Generated.xml
            • A0A585B4.bin
          • System.Drawing.Design.4.0.0.0.Nullness.Generated.xml
            • DBB4B7F2.bin
            • EFA69853.bin
          • System.Drawing.Design.xml
            • E232227C.bin
          • System.Drawing.xml
            • 2F425360.bin
            • 39C33485.bin
            • 9D6298E7.bin
            • CD562AD2.bin
          • System.Dynamic.4.0.0.0.Nullness.Generated.xml
            • 3BAFB1F2.bin
            • 8CC52453.bin
          • System.EnterpriseServices.2.0.0.0.Nullness.Generated.xml
            • D70EAD74.bin
          • System.EnterpriseServices.4.0.0.0.Nullness.Generated.xml
            • 91259AB2.bin
            • C42E9193.bin
          • System.EnterpriseServices.xml
            • 484CBB5B.bin
            • BC835E69.bin
          • System.I18n.xml
            • 994AEB69.bin
            • E767B348.bin
          • System.Nullness.Manual.xml
            • 8EB13CC3.bin
            • AC02D602.bin
          • System.Numerics.2.0.5.0.Nullness.Generated.xml
            • 613E6391.bin
          • System.Numerics.4.0.0.0.Nullness.Generated.xml
            • 0D729213.bin
            • EB46F332.bin
          • System.Numerics.xml
            • 4231948A.bin
            • B6F071FD.bin
            • F65D6778.bin
          • System.Printing.3.0.0.0.Nullness.Generated.xml
            • 092B2D15.bin
          • System.Printing.4.0.0.0.Nullness.Generated.xml
            • A17A3513.bin
            • E3D1E432.bin
          • System.Printing.xml
            • 0FB11A94.bin
            • 703E5A63.bin
            • 9376C751.bin
          • System.Runtime.Caching.4.0.0.0.Nullness.Generated.xml
            • 8BB7FA53.bin
            • D9ACBC32.bin
          • System.Runtime.Caching.xml
            • 6E34C19B.bin
          • System.Runtime.DurableInstancing.4.0.0.0.Nullness.Generated.xml
            • 5EE46672.bin
            • 94C6B993.bin
          • System.Runtime.DurableInstancing.xml
            • 952CDDB7.bin
          • System.Runtime.Remoting.2.0.0.0.Nullness.Generated.xml
            • DF5CCDB4.bin
          • System.Runtime.Remoting.4.0.0.0.Nullness.Generated.xml
            • 1A6BFFF2.bin
            • 5A03BD53.bin
          • System.Runtime.Remoting.xml
            • 3CA70F41.bin
            • 99D48EF3.bin
          • System.Runtime.Serialization.2.0.5.0.Nullness.Generated.xml
            • 21CFDDB1.bin
          • System.Runtime.Serialization.3.0.0.0.Nullness.Generated.xml
            • 9BB31735.bin
          • System.Runtime.Serialization.4.0.0.0.Nullness.Generated.xml
            • 41BE4DD2.bin
            • 4774B3B3.bin
          • System.Runtime.Serialization.Attributes.xml
            • 465D3048.bin
            • E749FA69.bin
          • System.Runtime.Serialization.Formatters.Soap.2.0.0.0.Contracts.xml
            • 6A729305.bin
            • 8B96B4C4.bin
          • System.Runtime.Serialization.Formatters.Soap.2.0.0.0.Nullness.Generated.xml
            • 5E8B5194.bin
          • System.Runtime.Serialization.Formatters.Soap.4.0.0.0.Contracts.xml
            • 38219442.bin
            • 4C2FB483.bin
          • System.Runtime.Serialization.Formatters.Soap.4.0.0.0.Nullness.Generated.xml
            • 5D7780D2.bin
            • F932F7B3.bin
          • System.Runtime.Serialization.Formatters.Soap.xml
            • AC344D82.bin
            • C74B6445.bin
            • C8E5DC30.bin
            • E636A127.bin
          • System.Runtime.Serialization.xml
            • 014E8BDC.bin
            • B677C06E.bin
          • System.Security.2.0.0.0.Contracts.xml
            • 132A5264.bin
          • System.Security.2.0.0.0.Nullness.Generated.xml
            • 98F7F474.bin
          • System.Security.2.0.0.0.Pure.xml
            • 65241177.bin
          • System.Security.4.0.0.0.Contracts.xml
            • 14DDD2E2.bin
            • 203E41A3.bin
          • System.Security.4.0.0.0.Nullness.Generated.xml
            • 530EE1B2.bin
            • F66E1D93.bin
          • System.Security.4.0.0.0.Pure.xml
            • 064BE631.bin
            • 3CA1E610.bin
          • System.Security.xml
            • 02B7D304.bin
            • 46ACC911.bin
            • 55841E76.bin
            • A33E1173.bin
          • System.ServiceProcess.2.0.0.0.Nullness.Generated.xml
            • 3D91EDF4.bin
          • System.ServiceProcess.4.0.0.0.Nullness.Generated.xml
            • 359B1C13.bin
            • F7A8DB32.bin
          • System.ServiceProcess.xml
            • 2335E116.bin
          • System.Transactions.2.0.0.0.Nullness.Generated.xml
            • 80962574.bin
          • System.Transactions.4.0.0.0.Nullness.Generated.xml
            • 3921BF93.bin
            • 3AAD12B2.bin
          • System.Transactions.xml
            • 377E8A05.bin
            • A0E212F7.bin
          • System.Web.2.0.0.0.Contracts.xml
            • 110F7884.bin
          • System.Web.2.0.0.0.Nullness.Generated.xml
            • 0930CE54.bin
          • System.Web.2.0.0.0.Pure.xml
            • 8B03ED97.bin
          • System.Web.4.0.0.0.Contracts.xml
            • 3D63F902.bin
            • 9CAD0083.bin
          • System.Web.4.0.0.0.Nullness.Generated.xml
            • 4965C3B3.bin
            • FF6ABE92.bin
          • System.Web.4.0.0.0.Pure.xml
            • 2C2BC351.bin
            • 4657BE70.bin
          • System.Web.ApplicationServices.4.0.0.0.Nullness.Generated.xml
            • 3969B1B3.bin
            • A3C08D52.bin
          • System.Web.ApplicationServices.xml
            • 331D36EA.bin
          • System.Web.Attributes.xml
            • C91B0A69.bin
            • FE2F6E88.bin
          • System.Web.I18n.xml
            • 152BB6A9.bin
            • DDDA67C8.bin
          • System.Web.RegularExpressions.xml
            • B6E517C5.bin
          • System.Web.Services.2.0.0.0.Nullness.Generated.xml
            • EF3E8174.bin
          • System.Web.Services.4.0.0.0.Nullness.Generated.xml
            • 30597093.bin
            • A9556EB2.bin
          • System.Web.Services.Attributes.xml
            • 336EB089.bin
            • 6811A868.bin
          • System.Web.Services.xml
            • 057956D0.bin
          • System.Web.xml
            • C4EB8CF0.bin
          • System.Windows.Forms.2.0.0.0.Contracts.xml
            • BFF1A7C4.bin
          • System.Windows.Forms.2.0.0.0.Nullness.Generated.xml
            • 1FE7A494.bin
          • System.Windows.Forms.2.0.0.0.Pure.xml
            • 860F9257.bin
          • System.Windows.Forms.4.0.0.0.Contracts.xml
            • 0AA1AF83.bin
            • 6C7C8742.bin
          • System.Windows.Forms.4.0.0.0.Nullness.Generated.xml
            • 1ED3D3D2.bin
            • E30F52B3.bin
          • System.Windows.Forms.4.0.0.0.Pure.xml
            • 3390EA11.bin
            • FDE30D70.bin
          • System.Windows.Forms.I18n.xml
            • 4286B6C8.bin
            • B6E38E69.bin
          • System.Windows.Forms.Manual.xml
            • 4EEF7F3C.bin
            • CD0C231D.bin
          • System.Windows.Forms.xml
            • 13FFA7C6.bin
            • 34C603F3.bin
            • 628A07B4.bin
            • EF816551.bin
          • System.Windows.Input.Manipulations.4.0.0.0.Nullness.Generated.xml
            • 51058BF2.bin
            • FDC406D3.bin
          • System.Windows.Input.Manipulations.xml
            • 2DA32DB7.bin
            • CD246420.bin
            • DB2249C5.bin
          • System.Windows.Interactivity.xml
            • B9B69619.bin
          • System.Xaml.4.0.0.0.Nullness.Generated.xml
            • A8037753.bin
            • B3426CF2.bin
          • System.Xaml.xml
            • B4FB056A.bin
            • C4D1BFD8.bin
            • C856BB1D.bin
          • System.Xml.2.0.0.0.Contracts.xml
            • 6BF6D6A4.bin
          • System.Xml.2.0.0.0.Nullness.Generated.xml
            • 6F949FB4.bin
          • System.Xml.2.0.0.0.Pure.xml
            • 8FAAEE37.bin
          • System.Xml.2.0.5.0.Contracts.xml
            • 551647A1.bin
          • System.Xml.2.0.5.0.Nullness.Generated.xml
            • A3D18051.bin
          • System.Xml.2.0.5.0.Pure.xml
            • 0328B352.bin
          • System.Xml.4.0.0.0.Contracts.xml
            • 4322B622.bin
            • 53D95363.bin
          • System.Xml.4.0.0.0.Nullness.Generated.xml
            • AAA3D1F2.bin
            • DD97C153.bin
          • System.Xml.4.0.0.0.Pure.xml
            • 3D2C46F1.bin
            • 5A1C7B50.bin
          • System.Xml.Attributes.xml
            • 09EED2C9.bin
            • 4A781A28.bin
          • System.Xml.I18n.xml
            • 8B551FA8.bin
            • BFE18249.bin
          • System.Xml.Linq.2.0.5.0.Contracts.xml
            • 176AE361.bin
          • System.Xml.Linq.2.0.5.0.Nullness.Generated.xml
            • 7D8FF611.bin
          • System.Xml.Linq.2.0.5.0.Pure.xml
            • 131F9792.bin
          • System.Xml.Linq.3.5.0.0.Contracts.xml
            • 2BCDA160.bin
          • System.Xml.Linq.3.5.0.0.Nullness.Generated.xml
            • 082623F0.bin
          • System.Xml.Linq.3.5.0.0.Pure.xml
            • 38A7F0F3.bin
          • System.Xml.Linq.4.0.0.0.Contracts.xml
            • 0FA00AA3.bin
            • DBDEF6E2.bin
          • System.Xml.Linq.4.0.0.0.Nullness.Generated.xml
            • 079885B2.bin
            • 0EE20693.bin
          • System.Xml.Linq.4.0.0.0.Pure.xml
            • 3B068A31.bin
            • 9C820F10.bin
          • System.Xml.Linq.I18n.xml
            • 59625789.bin
            • A5756368.bin
          • System.Xml.Linq.xml
            • 315B32BF.bin
            • AD7A27CD.bin
          • System.Xml.xml
            • 04E9321C.bin
            • 48B5EA79.bin
            • 4E3A56FE.bin
            • EAFF084B.bin
          • System.xml
            • 13EB449C.bin
            • 74BB9F68.bin
            • 82B05E4B.bin
            • 9F8B99E9.bin
            • C3B3EEEE.bin
            • D647FF29.bin
          • UIAutomationProvider.3.0.0.0.Nullness.Generated.xml
            • 899F4995.bin
          • UIAutomationProvider.4.0.0.0.Nullness.Generated.xml
            • 0F77E253.bin
            • 644600B2.bin
          • UIAutomationProvider.xml
            • 0476AD9B.bin
            • CD5CE20C.bin
            • E304A9E9.bin
          • UIAutomationTypes.3.0.0.0.Nullness.Generated.xml
            • 5EDD96D5.bin
          • UIAutomationTypes.4.0.0.0.Nullness.Generated.xml
            • B64E0FF2.bin
            • D2732553.bin
          • UIAutomationTypes.xml
            • 36927266.bin
            • 822993E3.bin
            • AB13DD51.bin
          • WindowsBase.3.0.0.0.Nullness.Generated.xml
            • F89378D5.bin
          • WindowsBase.3.0.0.0.Pure.xml
            • 50EEFBD6.bin
          • WindowsBase.4.0.0.0.Nullness.Generated.xml
            • 08F51D53.bin
            • 5003F1F2.bin
          • WindowsBase.4.0.0.0.Pure.xml
            • 2D08D750.bin
            • 2ED466F1.bin
          • WindowsBase.xml
            • 2F308F93.bin
            • 30274CA1.bin
            • 6ADA5064.bin
          • WindowsFormsIntegration.3.0.0.0.Nullness.Generated.xml
            • A65C6A55.bin
          • WindowsFormsIntegration.4.0.0.0.Nullness.Generated.xml
            • D0DE31D3.bin
            • FDCCE372.bin
          • WindowsFormsIntegration.xml
            • 2178B36F.bin
            • F032412A.bin
      • AcrobatViewerMvvm.6.0.ReSharper.user
      • AcrobatViewerMvvm.6.1.ReSharper.user
      • AcrobatViewerMvvm.csproj
      • AcrobatViewerMvvm.csproj.user
      • AcrobatViewerMvvm.sln
      • AcrobatViewerMvvm.sln.DotSettings.user
      • AcrobatViewerMvvm.suo
      • app.config
      • App.xaml
      • App.xaml.cs
      • Design
        • ClassDiagram.cd
      • GlobalSuppressions.cs
      • MainWindow.xaml
      • MainWindow.xaml.cs
      • MainWindowViewModel.cs
      • PdfViewer.cs
      • PdfViewer.Designer.cs
      • PdfViewer.resx
      • PdfViewerHost.cs
      • Properties
      • SamplePDF1.pdf
      • SamplePDF2.pdf
      • Settings.StyleCop
      • StyleCop.Cache
// Type: System.Windows.Media.Animation.Animatable
// Assembly: PresentationCore, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// Assembly location: C:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationCore.dll

using MS.Internal;
using MS.Internal.PresentationCore;
using MS.Utility;
using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Runtime;
using System.Security.Permissions;
using System.Windows;
using System.Windows.Media;
using System.Windows.Media.Composition;

namespace System.Windows.Media.Animation
{
  public abstract class Animatable : Freezable, IAnimatable, DUCE.IResource
  {
    private static readonly UncommonField<WeakReference> StoredWeakReferenceField = new UncommonField<WeakReference>();

    public bool HasAnimatedProperties
    {
      get
      {
        this.VerifyAccess();
        return this.IAnimatable_HasAnimatedProperties;
      }
    }

    static Animatable()
    {
    }

    [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
    protected Animatable()
    {
    }

    public Animatable Clone()
    {
      return (Animatable) base.Clone();
    }

    internal void PropertyChanged(DependencyProperty dp)
    {
      IndependentAnimationStorage animationStorage = AnimationStorage.GetStorage((DependencyObject) this, dp) as IndependentAnimationStorage;
      if (animationStorage != null)
        animationStorage.InvalidateResource();
      else
        this.RegisterForAsyncUpdateResource();
    }

    internal virtual void AddRefOnChannelAnimations(DUCE.Channel channel)
    {
      if (!this.IAnimatable_HasAnimatedProperties)
        return;
      FrugalMap animatedPropertiesMap = AnimationStorage.GetAnimatedPropertiesMap((DependencyObject) this);
      for (int index = 0; index < animatedPropertiesMap.Count; ++index)
      {
        int key;
        object obj;
        animatedPropertiesMap.GetKeyValuePair(index, out key, out obj);
        DUCE.IResource resource = obj as DUCE.IResource;
        if (resource != null)
          resource.AddRefOnChannel(channel);
      }
    }

    internal virtual void ReleaseOnChannelAnimations(DUCE.Channel channel)
    {
      if (!this.IAnimatable_HasAnimatedProperties)
        return;
      FrugalMap animatedPropertiesMap = AnimationStorage.GetAnimatedPropertiesMap((DependencyObject) this);
      for (int index = 0; index < animatedPropertiesMap.Count; ++index)
      {
        int key;
        object obj;
        animatedPropertiesMap.GetKeyValuePair(index, out key, out obj);
        DUCE.IResource resource = obj as DUCE.IResource;
        if (resource != null)
          resource.ReleaseOnChannel(channel);
      }
    }

    internal static DependencyProperty RegisterProperty(string name, System.Type propertyType, System.Type ownerType, object defaultValue, PropertyChangedCallback changed, ValidateValueCallback validate, bool isIndependentlyAnimated, CoerceValueCallback coerced)
    {
      UIPropertyMetadata propertyMetadata = !isIndependentlyAnimated ? new UIPropertyMetadata(defaultValue) : (UIPropertyMetadata) new IndependentlyAnimatedPropertyMetadata(defaultValue);
      propertyMetadata.PropertyChangedCallback = changed;
      if (coerced != null)
        propertyMetadata.CoerceValueCallback = coerced;
      return DependencyProperty.Register(name, propertyType, ownerType, (PropertyMetadata) propertyMetadata, validate);
    }

    internal void AddRefResource(DUCE.IResource resource, DUCE.Channel channel)
    {
      if (resource == null)
        return;
      resource.AddRefOnChannel(channel);
    }

    internal void ReleaseResource(DUCE.IResource resource, DUCE.Channel channel)
    {
      if (resource == null)
        return;
      resource.ReleaseOnChannel(channel);
    }

    protected override bool FreezeCore(bool isChecking)
    {
      if (!this.IAnimatable_HasAnimatedProperties)
        return base.FreezeCore(isChecking);
      if (TraceFreezable.IsEnabled)
        TraceFreezable.Trace(TraceEventType.Warning, TraceFreezable.UnableToFreezeAnimatedProperties, (object) this);
      return false;
    }

    DUCE.ResourceHandle DUCE.IResource.AddRefOnChannel(DUCE.Channel channel)
    {
      return DUCE.ResourceHandle.Null;
    }

    void DUCE.IResource.ReleaseOnChannel(DUCE.Channel channel)
    {
    }

    DUCE.ResourceHandle DUCE.IResource.GetHandle(DUCE.Channel channel)
    {
      return DUCE.ResourceHandle.Null;
    }

    int DUCE.IResource.GetChannelCount()
    {
      return 0;
    }

    DUCE.Channel DUCE.IResource.GetChannel(int index)
    {
      return (DUCE.Channel) null;
    }

    DUCE.ResourceHandle DUCE.IResource.Get3DHandle(DUCE.Channel channel)
    {
      throw new NotImplementedException();
    }

    void DUCE.IResource.RemoveChildFromParent(DUCE.IResource parent, DUCE.Channel channel)
    {
      throw new NotImplementedException();
    }

    internal DUCE.ResourceHandle GetAnimationResourceHandle(DependencyProperty dp, DUCE.Channel channel)
    {
      if (channel != null && this.IAnimatable_HasAnimatedProperties)
        return IndependentAnimationStorage.GetResourceHandle((DependencyObject) this, dp, channel);
      else
        return DUCE.ResourceHandle.Null;
    }

    internal WeakReference GetWeakReference()
    {
      object obj = (object) Animatable.StoredWeakReferenceField.GetValue((DependencyObject) this);
      if (obj == null)
      {
        obj = (object) new WeakReference((object) this);
        Animatable.StoredWeakReferenceField.SetValue((DependencyObject) this, (WeakReference) obj);
      }
      return (WeakReference) obj;
    }

    internal bool IsBaseValueDefault(DependencyProperty dp)
    {
      return this.ReadLocalValue(dp) == DependencyProperty.UnsetValue;
    }

    internal void RegisterForAsyncUpdateResource()
    {
      DUCE.IResource resource = (DUCE.IResource) this;
      if (resource == null || this.Dispatcher == null || !this.Animatable_IsResourceInvalidationNecessary)
        return;
      MediaContext mediaContext = MediaContext.From(this.Dispatcher);
      if (resource.GetHandle(mediaContext.Channel).IsNull)
        return;
      mediaContext.ResourcesUpdated += new MediaContext.ResourcesUpdatedHandler(this.UpdateResource);
      this.Animatable_IsResourceInvalidationNecessary = false;
    }

    internal virtual void UpdateResource(DUCE.Channel channel, bool skipOnChannelCheck)
    {
      this.Animatable_IsResourceInvalidationNecessary = true;
    }

    internal void InternalWritePreamble()
    {
      this.WritePreamble();
    }

    [EditorBrowsable(EditorBrowsableState.Never)]
    public static bool ShouldSerializeStoredWeakReference(DependencyObject target)
    {
      return false;
    }

    [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
    public void ApplyAnimationClock(DependencyProperty dp, AnimationClock clock)
    {
      this.ApplyAnimationClock(dp, clock, HandoffBehavior.SnapshotAndReplace);
    }

    public void ApplyAnimationClock(DependencyProperty dp, AnimationClock clock, HandoffBehavior handoffBehavior)
    {
      if (dp == null)
        throw new ArgumentNullException("dp");
      if (!AnimationStorage.IsPropertyAnimatable((DependencyObject) this, dp))
        throw new ArgumentException(MS.Internal.PresentationCore.SR.Get("Animation_DependencyPropertyIsNotAnimatable", (object) dp.Name, (object) this.GetType()), "dp");
      else if (clock != null && !AnimationStorage.IsAnimationValid(dp, clock.Timeline))
      {
        throw new ArgumentException(MS.Internal.PresentationCore.SR.Get("Animation_AnimationTimelineTypeMismatch", (object) clock.Timeline.GetType(), (object) dp.Name, (object) dp.PropertyType), "clock");
      }
      else
      {
        if (!HandoffBehaviorEnum.IsDefined(handoffBehavior))
          throw new ArgumentException(MS.Internal.PresentationCore.SR.Get("Animation_UnrecognizedHandoffBehavior"));
        if (this.IsSealed)
          throw new InvalidOperationException(MS.Internal.PresentationCore.SR.Get("IAnimatable_CantAnimateSealedDO", (object) dp, (object) this.GetType()));
        else
          AnimationStorage.ApplyAnimationClock((DependencyObject) this, dp, clock, handoffBehavior);
      }
    }

    [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
    public void BeginAnimation(DependencyProperty dp, AnimationTimeline animation)
    {
      this.BeginAnimation(dp, animation, HandoffBehavior.SnapshotAndReplace);
    }

    public void BeginAnimation(DependencyProperty dp, AnimationTimeline animation, HandoffBehavior handoffBehavior)
    {
      if (dp == null)
        throw new ArgumentNullException("dp");
      if (!AnimationStorage.IsPropertyAnimatable((DependencyObject) this, dp))
        throw new ArgumentException(MS.Internal.PresentationCore.SR.Get("Animation_DependencyPropertyIsNotAnimatable", (object) dp.Name, (object) this.GetType()), "dp");
      else if (animation != null && !AnimationStorage.IsAnimationValid(dp, animation))
      {
        throw new ArgumentException(MS.Internal.PresentationCore.SR.Get("Animation_AnimationTimelineTypeMismatch", (object) animation.GetType(), (object) dp.Name, (object) dp.PropertyType), "animation");
      }
      else
      {
        if (!HandoffBehaviorEnum.IsDefined(handoffBehavior))
          throw new ArgumentException(MS.Internal.PresentationCore.SR.Get("Animation_UnrecognizedHandoffBehavior"));
        if (this.IsSealed)
          throw new InvalidOperationException(MS.Internal.PresentationCore.SR.Get("IAnimatable_CantAnimateSealedDO", (object) dp, (object) this.GetType()));
        else
          AnimationStorage.BeginAnimation((DependencyObject) this, dp, animation, handoffBehavior);
      }
    }

    public object GetAnimationBaseValue(DependencyProperty dp)
    {
      if (dp == null)
        throw new ArgumentNullException("dp");
      else
        return this.GetValueEntry(this.LookupEntry(dp.GlobalIndex), dp, (PropertyMetadata) null, RequestFlags.AnimationBaseValue).Value;
    }

    [UIPermission(SecurityAction.InheritanceDemand, Window = UIPermissionWindow.AllWindows)]
    internal override sealed void EvaluateAnimatedValueCore(DependencyProperty dp, PropertyMetadata metadata, ref EffectiveValueEntry entry)
    {
      if (!this.IAnimatable_HasAnimatedProperties)
        return;
      AnimationStorage storage = AnimationStorage.GetStorage((DependencyObject) this, dp);
      if (storage == null)
        return;
      storage.EvaluateAnimatedValue(metadata, ref entry);
    }
  }
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Software Developer (Senior)
United Kingdom United Kingdom
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions