Hi,
The rotation property of the page object causes me problems.
I want to rotate a specific page in the RadFixedDocument, so i index the right page and rotate it 90 degree and after that i call OnPropertyChanged to update the PdfDocument property.
But when the page was rotated(in the debug mode the value has been changed) the radpdfviewer doesn't display the rotation.
Where could the error be located?
Many thanks in advance for youre suggestions.
MainWindow.xaml.cs:
01.using System;02.using System.IO;03.using System.Linq;04.using System.Windows;05.using System.Windows.Input;06.using Telerik.Windows.Documents.Fixed;07.using Telerik.Windows.Documents.Fixed.FormatProviders;08.using Telerik.Windows.Documents.Fixed.FormatProviders.Pdf;09.using Telerik.Windows.Documents.Fixed.Model;10.using Telerik.Windows.Documents.UI;11.using Rotation = Telerik.Windows.Documents.Fixed.Model.Data.Rotation;12. 13.namespace TelerikWpfApp114.{15. /// <summary>16. /// Interaction logic for MainWindow.xaml17. /// </summary>18. public partial class MainWindow : Window19. {20. private PdfViewModel _pdfViewModel;21. public MainWindow()22. {23. InitializeComponent();24. _pdfViewModel = new PdfViewModel();25. DataContext = _pdfViewModel;26. }27. 28. private void RotateSpecificPage(object sender, RoutedEventArgs e)29. {30. _pdfViewModel.RotateSpecificPage();31. }32. 33. private void DeleteSpecificPage(object sender, RoutedEventArgs e)34. {35. _pdfViewModel.DeleteSpecificPage();36. }37. }38.}MainWindow.xaml:
01.<Window03. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"04. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"05. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"06. xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"07. xmlns:converters="clr-namespace:Telerik.Windows.Documents.Converters;assembly=Telerik.Windows.Controls.FixedDocumentViewers"08. xmlns:telerikWpfApp1="clr-namespace:TelerikWpfApp1"09. mc:Ignorable="d"10. x:Class="TelerikWpfApp1.MainWindow"11. Title="MainWindow" Height="Auto" Width="Auto">12. <Grid>13. <Grid>14. <Grid.RowDefinitions>15. <RowDefinition Height="Auto" />16. <RowDefinition Height="Auto" />17. <RowDefinition Height="*" />18. </Grid.RowDefinitions>19. <Button Grid.Row="0" Click="RotateSpecificPage">RotatePage</Button>20. <Button Grid.Row="1" Click="DeleteSpecificPage">DeletePage</Button>21. <telerik:RadPdfViewer Grid.Row="2" x:Name="PdfViewer" Document="{Binding Path=PdfDocument, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}"/>22. </Grid>23. </Grid>24.</Window>PdfViewModel.cs:
01.using System;02.using System.Collections.Generic;03.using System.ComponentModel;04.using System.IO;05.using System.Linq;06.using System.Runtime.CompilerServices;07.using System.Text;08.using System.Threading.Tasks;09.using System.Windows;10.using System.Windows.Input;11.using Telerik.Windows.Documents.Fixed.FormatProviders;12.using Telerik.Windows.Documents.Fixed.FormatProviders.Pdf;13.using Telerik.Windows.Documents.Fixed.Model;14.using Telerik.Windows.Documents.Fixed.Model.Data;15.using TelerikWpfApp1.Annotations;16. 17.namespace TelerikWpfApp118.{19. public class PdfViewModel : INotifyPropertyChanged20. {21. private string _path = @"test.pdf";22. private RadFixedDocument _pdfDocument;23. private const int PageNumber = 0;24. 25. public PdfViewModel()26. {27. PdfDocument = ReadPdf(_pathOne);28. }29. public RadFixedDocument PdfDocument30. {31. get => _pdfDocument;32. set33. {34. if (!Equals(value, null))35. {36. _pdfDocument = value;37. OnPropertyChanged();38. }39. }40. }41. 42. private RadFixedDocument ReadPdf(string path)43. {44. using (var stream = File.OpenRead(path))45. {46. return new PdfFormatProvider(stream, FormatProviderSettings.ReadAllAtOnce).Import();47. }48. }49. 50. public void RotateSpecificPage()51. {52. Console.WriteLine(@"Page has been rotated");53. if (!Equals(PdfDocument, null))54. {55. PdfDocument.Pages[PageNumber].Rotation = Rotation.Rotate90;56. OnPropertyChanged(nameof(PdfDocument));57. }58. }59. 60. public void DeleteSpecificPage()61. {62. Console.WriteLine(@"Page has been deleted");63. if (!Equals(PdfDocument, null) && PdfDocument.Pages.Count > 1)64. {65. PdfDocument.Pages.RemoveAt(PageNumber);66. OnPropertyChanged(nameof(PdfDocument));67. }68. }69. 70. public event PropertyChangedEventHandler PropertyChanged;71. 72. [NotifyPropertyChangedInvocator]73. protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)74. {75. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));76. }77. }78.}