Значения привязки, не отраженные в документе XPS - PullRequest
2 голосов
/ 11 июля 2019

Я изменил цвет заливки шаблона (кнопки) в зависимости от значения масштаба через привязку. Это значение привязки не отражено в документе XPS. Пожалуйста, найдите шаблон и код сериализации XPS Doocument, как показано ниже.

Проблема: Значения привязки (свойство уровня) не отражаются. Так что масштабирование не изменилось. Так как я обновил масштабируемое значение на основе значения уровня.

        Xaml Code : based on the level value fill color will change.

        <Canvas.Clip>
         <RectangleGeometry Rect="0,2.5,100,100">
             <RectangleGeometry.Transform>
                    <ScaleTransform ScaleX="1" ScaleY="{Binding Level}" CenterX="0" CenterY="97.5" />
             </RectangleGeometry.Transform>
         </RectangleGeometry>
       </Canvas.Clip>

        //XPS Document Code.  

        //Set up the WPF Control to be Saved

        Canvas controlToPrint= new Canvas();

        //canv is the instance of my canvas containing button.
        controlToPrint = canv;
        canv = null;

        FixedDocument fixedDoc = new FixedDocument();
        PageContent pageContent = new PageContent();
        FixedPage fixedPage = new FixedPage();

        //Create first page of document
        fixedPage.Children.Add(controlToPrint);
        ((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage);

        var size = fixedDoc.DocumentPaginator.PageSize;
        pageContent.Measure(size);
        pageContent.Arrange(new Rect(new Point(), size));
        pageContent.UpdateLayout();
        fixedDoc.Pages.Add(pageContent);

        // Configure save file dialog box
        Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
        dlg.FileName = "MyReport"; // Default file name
        dlg.DefaultExt = ".xps"; // Default file extension
        dlg.Filter = "XPS Documents (.xps)|*.xps"; // Filter files by extension

        // Show save file dialog box
        Nullable<bool> result = dlg.ShowDialog();

        // Process save file dialog box results
        if (result == true)
        {
            // Save document
            string filename = dlg.FileName;

            FixedDocument doc = fixedDoc;
            XpsDocument xpsd = new XpsDocument(filename, FileAccess.ReadWrite);
            System.Windows.Xps.XpsDocumentWriter xw = XpsDocument.CreateXpsDocumentWriter(xpsd);
            xw.Write(doc);
            xpsd.Close();
        }

Подскажите, пожалуйста, как этого добиться?

Примечание:

Я мог бы достичь этого при использовании триггеров. Но я не должен был использовать триггеры.

Спасибо

рейнджит.

...