Почему я теряю свою привязку данных при печати к XpsDocument?

Я думаю, что это ваша глобальная сфера, которая загрязнена. Посмотрите на этот пример:

import sympy as sy

def f(x, w1, w2):
    return w1 * x**3 + w2 * x - 1

def derivative(w1, w2, pt):
    x = sy.Symbol('x')

    # Get derivative of f(x)
    def df(x, w1, w2):
        return sy.diff(f(x, w1, w2),x)

    # Evaluate at point x
    return df(x, w1, w2).subs(x,pt)

print(derivative(5, 8, 2))

Это просто измененная версия вашего примера 2, и он возвращает тот же ответ.

8
задан 16 January 2009 в 16:50
поделиться

2 ответа

Причина этой ошибки состоит в том, что расположение FixedPage не обновляется до записи. Это заставляет первый FixedPage в первом FixedDocument в FixedDocumentSequence быть записанным неправильно. Это не влияет ни на КАКИЕ ДРУГИЕ СТРАНИЦЫ В ПОЛУЧАЮЩЕМСЯ ДОКУМЕНТЕ, который сделал эту ошибку/пограничный случай тяжелее для закрепления.

Следующие РАБОТЫ (переписанная версия нерабочего примера):

FixedPage fp = CreateFixedPageWithBinding();
fp.DataContext = CreateDataContext();
var fd = new FixedDocument();

/* PAY ATTENTION HERE */
// set the page size on our fixed document 
fd.DocumentPaginator.PageSize =
   new System.Windows.Size()
   {
       Width = DotsPerInch * PageWidth,
       Height = DotsPerInch * PageHeight
   };
// Update the layout of our FixedPage
var size = fd.DocumentPaginator.PageSize;
page.Measure(size);
page.Arrange(new Rect(new Point(), size));
page.UpdateLayout();    
/* STOP PAYING ATTENTION HERE */

var pc = new PageContent();
((IAddChild)pc).AddChild(fp);
fd.Pages.Add(pageContent);
// Create a fixed document sequence and add the fixed document to it
FixedDocumentSequence fds = CreateFixedDocumentSequence();
var dr = new DocumentReference();
dr.BeginInit();
dr.SetDocument(fd);
dr.EndInit();
(fds as IAddChild).AddChild(dr);
// Create an xps document and write the fixed document sequence to it
var p = Package.Open("c:\\output.xps", FileMode.CreateNew);
var doc = new XpsDocument(p);
var writer = XpsDocument.CreateXpsDocumentWriter(doc);
wri2.Write(fds);
p.Flush();
p.Close();
9
ответ дан 5 December 2019 в 17:42
поделиться

Одна причина, что Вы теряете привязку, состоит в том, что Вы выдаете исключение где-нибудь - к сожалению, это исключение тихо глотают, и Ваша привязка просто "прекращает работать". Включите исключения Первого шанса и посмотрите, поражено ли что-нибудь.

0
ответ дан 5 December 2019 в 17:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: