我正在扩展 PrintDocumentAdapter 以通过云打印将名册信息发送到打印机。一切都运行良好,直到更改设置以减少文档中的页数。
例如,一张表格适合两张 A4 页,但需要三张 A5 页。云打印开始时默认选择 A4,并生成预览。如果页面尺寸更改为 A5,则会按预期生成包含三页的新预览。如果随后将页面尺寸更改回 A4,云打印会显示消息“抱歉,这不起作用。请重试。” 并且必须退出。
这似乎正在发生:
当旧的 PageRange 大于返回的页数时,这只会导致错误,但为什么 onWrite() 会使用无效的 PageRange 被调用呢?
我注意到我的设备上的许多应用程序只是缩放输出,以便页数在不同设置之间不会发生变化。他们这样做是因为这个问题吗?
public class PrintAdapter extends PrintDocumentAdapter {
private static final String TAG = "PrintAdapter";
private PrintedPdfBuilder mPrintedPdfBuilder;
private int mPages;
public PrintAdapter(PrintedPdfBuilder printedPdfBuilder) …Run Code Online (Sandbox Code Playgroud) 我在将 string[] 的值绑定到 BindableLayout 的 DataTemplate 时遇到问题。我在 Shell 弹出模板的 AboutPage 中重新创建了该问题。
关于页面.xaml
<ContentPage.BindingContext>
<vm:AboutViewModel />
</ContentPage.BindingContext>
<StackLayout VerticalOptions="Center"
Padding="20"
BindableLayout.ItemsSource="{Binding Data}">
<BindableLayout.ItemTemplate>
<DataTemplate>
<Label FontSize="Large"
Text="{Binding .}"
BackgroundColor="PowderBlue"/>
</DataTemplate>
</BindableLayout.ItemTemplate>
</StackLayout>
Run Code Online (Sandbox Code Playgroud)
关于ViewModel.cs
namespace App2.ViewModels
{
public class AboutViewModel : BaseViewModel
{
private string[] _data;
public string[] Data
{
get
{
return _data;
}
set
{
if (_data != value)
{
_data = value;
OnPropertyChanged();
}
}
}
public AboutViewModel()
{
Title = "About";
Data = new string[] { "One", "Two", …Run Code Online (Sandbox Code Playgroud)