我在 WPF 應用程式上有一個 ComboBox,其中包含連接到計算機的所有列印機。列印機正確到達組合框,我也在捕獲默認列印機。現在我要做的是將 ComboBox 上的默認值或選定值設定為默認列印機。
我正在獲取列印機串列和默認值
private void GetPrinterList()
{
var server = new PrintServer();
var queues = server.GetPrintQueues(new[] {EnumeratedPrintQueueTypes.Shared,
EnumeratedPrintQueueTypes.Connections});
string defaultPrinter = GetDefaultPrinter();
Printers = new ObservableCollection<Printer>();
foreach (var item in queues)
{
Printers.Add(new Printer { Name = item.FullName });
}
queues = server.GetPrintQueues(new[] { EnumeratedPrintQueueTypes.Local });
foreach (var item in queues)
{
Printers.Add(new Printer { Name = item.FullName });
}
var defPrinter = Printers.FirstOrDefault(i => i.Name == defaultPrinter);
if (defPrinter != null)
{
//NOTE Modified example after posting because @ASh
//made aware (in comments) I had an error in code.
CurrentDefaultPrinter = defPrinter.Name.ToString();
}
}
在 XAML 方面,我嘗試將 SelectedValue 和 SelectedValuePath 都系結到 CurrentDefaultPrinter,但都沒有在 ComboBox 中顯示選定的值。使這項作業缺少什么?
<ComboBox
Width="150"
Height="35"
Margin="0,0,0,2"
DisplayMemberPath="Name"
FontSize="18"
SelectedItem="{Binding CurrentDefaultPrinter, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
ItemsSource="{Binding Printers}" />
我確實找到了與我正在嘗試做的類似的解決方案,但還不足以讓我解決我的問題。
在 WPF MVVM 應用程式的 ComboBox 中設定默認選定項
注意我的代碼和 XAML 在發布后都已被修改,因為有人指出我的代碼中有錯誤。但是,修改后我仍然沒有讓 ComboBox 顯示帶有更新代碼的默認列印機。
uj5u.com熱心網友回復:
不要系結 SelectedValue 或 SelectedValuePath,只系結 SelectedItem:
SelectedItem="{Binding CurrentDefaultPrinter}"
請注意,SelectedItem應該存在于ItemsSource集合中。所以它應該與該集合中的專案具有相同的型別,而不是string. 另外它應該引發 PropertyChanged 事件(來自 INPC 介面)
public Printer CurrentDefaultPrinter { get; set; }
CurrentDefaultPrinter = Printers.FirstOrDefault(i => i.Name == defaultPrinter);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/513324.html
標籤:C#wpf虚拟机
下一篇:將文本框和其他文本框wpfC#
