Печать в Silverlight/Lightswitch, использующем XAML и пользовательские элементы управления

Я программирую прикладное использование Silverlight Lightswitch. Я хочу напечатать данные, которые показаны на некоторых экранах.

Я нашел эта обучающая программа для печати в Silverlight/Lightswitch. Это описывает, как создать пользовательский элемент управления, используя XAML, который может быть напечатан. Контроль похож на это:

Printing in Lightswitch

В фоновом режиме вы видите контроль, как он похож в применении Silverlight. Контроль ограничивает и кнопку и сетку:


    <button Content="Print" Name="btnPrint" Click="btnPrint_Click" />
        
            <!-- grid code goes here -->
            <!-- some more code an closing tags -->

Используя API печати Silverlight, печать сделана как это в пользовательском элементе управления:

PrintDocument printInvoice = new PrintDocument();
private void btnPrint_Click(object sender, System.Windows.RoutedEventArgs e){   
    printInvoice.PrintPage +=
        new EventHandler(printInvoice_PrintPage);
}

void printInvoice_PrintPage(object sender, PrintPageEventArgs e){
    e.PageVisual = LayoutRoot;
}

Начиная с e. PageVisual = LayoutRoot используется, мы только видим стол в печатной продукции, а не кнопку. Это хорошо, но я хотел бы использовать отдельный XAML для расположения печати. Моя цель состоит в том, чтобы просто показать кнопку Печать на применении Silverlight и определить расположение печати в отдельном XAML.

Так, я только что начал создавать второй XAML как SilverlightControl и попытался использовать его:

MyPrintLayout mpl = new MyPrintLayout();
void printArtikels_PrintPage(object sender, PrintPageEventArgs e){
    e.PageVisual = mpl.LayoutRoot;
}

Но я получаю ошибку "Элемент десяти кубометров ist bereits десять кубометров untergeordnete Элемент eines anderen Элементы" (английский язык: "Элемент уже - подэлемент другого элемента"). Эта ошибка была обсуждена в этот вопрос также, но это не решает мою проблему.

Когда я включаю MyPrintLayout в применении Silverlight, это показано без проблемы (есть только некоторый текст в нем, чтобы проверить функциональность).

Кажется, что я делаю это полностью неправильно. Как я могу достигнуть своей цели?

0
nl ja de
@memorizer я видел, что вы ответили на мой вопрос, почему эта почта удалена теперь? Это решило мою проблему, просто требуемую, чтобы принять его...
добавлено автор Uooo, источник
Извините, неправильная связь, нажатая... =)
добавлено автор Memoizer, источник

1 ответы

mpl. LayoutRoot уже подэлемент mpl. Попробуйте это:

void printArtikels_PrintPage(object sender, PrintPageEventArgs e){
    MyPrintLayout mpl = new MyPrintLayout();
    e.PageVisual = mpl;
}
3
добавлено
Это решило мою проблему, спасибо! Теперь это работает как ожидалось:)
добавлено автор Uooo, источник
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot