Studiavo le proprietà di questa classe, la quale rappresenta, cito la documentazione MSDN : "il server di stampa locale (il computer sul quale l'applicazione è in esecuzione)" . Quest'oggetto molto interessante, permette la gestione delle code di stampa oltre a poter ottenere l'insieme delle stampanti locali con relative proprietà. Per questo semplice compito sono sufficienti poche righe di codice :
1 private void Window_Loaded(object sender, RoutedEventArgs e)
2 {
3 LocalPrintServer ps = new LocalPrintServer();
4
5 PrintQueueCollection printCollection = ps.GetPrintQueues();
6
7 IEnumerable<PrintQueue> pq = from p in printCollection
8 orderby p.Name
9 select p;
10
11 lstPrinters.ItemsSource = pq;
12 }
1 <Window.Resources>
2 <Style x:Key="StretchedListBoxItem" TargetType="{x:Type ListBoxItem}">
3 <Setter Property="HorizontalContentAlignment" Value="Stretch" />
4 </Style>
5 </Window.Resources>
6 <Grid>
7 <ListBox Name="lstPrinters" Margin="24,24,24,17" ItemContainerStyle="{StaticResource StretchedListBoxItem}">
8 <ListBox.ItemTemplate>
9 <DataTemplate>
10 <Border Margin="1,1,1,1" BorderThickness="1" CornerRadius="6,6,6,6" BorderBrush="Blue">
11 <Grid HorizontalAlignment="Stretch">
12 <Grid.ColumnDefinitions>
13 <ColumnDefinition Width="80" />
14 <ColumnDefinition Width="*" />
15 </Grid.ColumnDefinitions>
16 <Grid.RowDefinitions>
17 <RowDefinition Height="40" />
18 <RowDefinition Height="40" />
19 </Grid.RowDefinitions>
20 <Image Grid.RowSpan="2" Margin="6,9,7,9" Name="imgPrint" Stretch="Fill" Source="Printer.png"/>
21 <TextBlock Grid.Row="0" Grid.Column="1" Text="{Binding FullName}" Margin="8,13,10,0"/>
22 <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding Description}" Margin="8,4,10,0"/>
23 </Grid>
24 </Border>
25 </DataTemplate>
26 </ListBox.ItemTemplate>
27
28 </ListBox>
29
30 </Grid>
Penso che la classe meriti uno studio approfondito date le potenzialità offerte.