gpt4 book ai didi

c# - 由于大小写不同,WPF Combobox 在 ItemSource 中找不到 SelectedValue

转载 作者:太空宇宙 更新时间:2023-11-03 13:10:51 24 4
gpt4 key购买 nike

我有一个组合框,用于显示已安装打印机的列表。我的 View 模型的 Printer属性是使用特定打印机路径字符串预定义的,如下所述。但是,ComboBox 最初并未设置为预定义值。这似乎是由于预定义值的大小写与已安装打印机列表中的值不同所致。

我创建了一个 PrinterViewModel看起来像的类:

public class PrinterViewModel
{
public string Name { get; set; } // Name of the printer (e.g. 'My Printer on PrinterServer')
public string Id { get; set; } // Path of the printer (e.g. '\\PrinterServer\My Printer')
}

组合框看起来像:

<ComboBox
ItemsSource="{Binding Printers}"
SelectedValue="{Binding Printer, Mode=TwoWay}"
SelectedValuePath="Id"
DisplayMemberPath="Name" />

在哪里Printers是一个 ObservableCollection<PrinterViewModel>属性(property)和Printer是一个字符串属性,应由 Id 填充.

例如,如果我的预定义值为 Printer是“\printerserver\My Printer”,但已安装打印机的列表包含“\PrinterServer\MyPrinter”,由于大小写和 SelectedValue 不同,它们不匹配未应用于我的 ComboBox。

有没有办法比较提供的SelectedValueItemSource 中的项目并忽略大小写?

最佳答案

您可以让您的 Printer 属性始终包含小写的 Id,然后在您的 SelectedValue 绑定(bind)中使用转换器:

// Don't forget to add support for INotifyPropertyChanged
private string printer;
public string Printer
{
get { return printer; }
set { printer = value == null ? null : value.ToLower(); }
}
<ComboBox ItemsSource="{Binding Printers}"
SelectedValue="{Binding Printer, Mode=TwoWay, Converter={local:ToLowerConverter}}"
SelectedValuePath="Id"
DisplayMemberPath="Name" />

关于c# - 由于大小写不同,WPF Combobox 在 ItemSource 中找不到 SelectedValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28750003/

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