gpt4 book ai didi

c# - XAML 显示默认安装的打印机

转载 作者:行者123 更新时间:2023-11-30 16:54:46 25 4
gpt4 key购买 nike

<UserControl x:Class="MyApp.PrinterSelection"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:Printing="clr-namespace:System.Drawing.Printing;assembly=System.Drawing"
xmlns:local="clr-namespace:MyApp"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">

<Grid>

<ListBox x:Name="displayInstalledPrinterListView" HorizontalAlignment="Left" Height="311" Margin="10,0,0,0" VerticalAlignment="Top" Width="499" ItemsSource="{x:Static Printing:PrinterSettings.InstalledPrinters}" SelectionChanged="displayInstalledPrinterListView_SelectionChanged" AlternationCount="2" FontSize="16"/>
</Grid>

如何使用 XAML 指示列表框中的哪台打印机是默认打印机。如果无法使用 XAML 执行此操作,那么最好的方法是什么?

我知道我可以通过编程方式检查每台打印机以查看 IsDefaultPrinter 是否为真。但是我想知道这是否可以用 XAML 完成(仅)

最佳答案

我不是很清楚具体您遇到了什么问题,也不是您希望打印机名称的视觉显示如何更改。因此,这是一个仅 XAML 实现的通用示例,它显示所有已安装的打印机以及当前默认打印机的名称:

<Window x:Class="TestSO30225596DefaultPrinter.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Printing="clr-namespace:System.Printing;assembly=System.Printing"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<Printing:LocalPrintServer x:Key="localPrintServer1"/>
<ObjectDataProvider x:Key="printerCollection"
ObjectInstance="{StaticResource localPrintServer1}"
MethodName="GetPrintQueues">
<ObjectDataProvider.MethodParameters>
<x:ArrayExtension Type="{x:Type Printing:EnumeratedPrintQueueTypes}">
<Printing:EnumeratedPrintQueueTypes>Local</Printing:EnumeratedPrintQueueTypes>
<Printing:EnumeratedPrintQueueTypes>Connections</Printing:EnumeratedPrintQueueTypes>
</x:ArrayExtension>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ListBox x:Name="displayInstalledPrinterListView"
HorizontalAlignment="Left" VerticalAlignment="Top"
Height="311" Width="499" Margin="10,0,0,0"
ItemsSource="{Binding Source={StaticResource printerCollection}}"
AlternationCount="2" FontSize="16">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<StackPanel Orientation="Horizontal" Grid.Row="1">
<TextBlock Text="Default Printer: "/>
<TextBlock Text="{Binding Source={StaticResource localPrintServer1}, Path=DefaultPrintQueue.Name}"/>
</StackPanel>
</Grid>
</Window>

请注意,您需要添加对与 WPF 兼容的 System.Printing.dll 程序集的引用。以上在技术上符合您的广泛规范,即它确实指示(通过 ListBox 下方显示的文本)默认打印机。

我相信给出上面的示例,您可以修改它以满足您的特定需求,方法是使用 DefaultPrintQueue.Name 属性值与每台打印机的实际名称进行比较,并显示任何指示您认为最合适的。

关于c# - XAML 显示默认安装的打印机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30225596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com