WPF/XAML - 允许 ComboBox 具有不在 ItemsSource 中的 SelectedValue

标签 wpf xaml combobox

所以,我有一个客户表,包含客户记录,记录,每个记录都有一个customertype 字段。我还有一个 customertype 表,其中包含 customertype 字段的有效值。

我需要一个 WPF 来做 CRUD。 (创建、查看、更新、删除)。

显而易见的解决方案是使用 ComboBox,其 SelectedValue 属性绑定(bind)到 customertype 字段,其 ItemsSource 属性绑定(bind)到由 customertype 表的查询填充的列表。

问题是,除了你在练习中看到的那种简单问题之外,这不起作用。

当您查看或编辑具有不在 customertype 表中的 customertype 值的客户记录时,就会出现困难。这可能是错误发生的,也可能是因为 customertype 已被弃用并从表中删除。

在这种情况下,WPF 所做的是将 customertype 字段设置为 null,因为 SelectedValue 不在 ItemsSource 列表中。这是一个问题。

如果您只是查看,您应该看到表中的值,无论它是否在列表中。如果您正在编辑,您可以提出一个合理的论点,即您也应该显示表中的值,至少最初是这样,但如果您更改选择,您将无法获得您开始时的内容。

那么,有什么想法吗?这是一个几乎在我拥有的每个编辑/查看表单上都会出现的问题,所以我更喜欢在使用时相当干净的东西。 (也就是说,考虑到 XAML 中的复杂性选择,我需要处理这些字段之一的每个地方,或者支持我插入的 XAML 以处理这些字段之一的代码中的复杂性,我更喜欢后者。)

最佳答案

为此,我建议不要将您的 ItemsSource 直接绑定(bind)到 CustomerType 表的内容。相反,合并 Customer Type 表中 Customer Type 项目的 ItemsSource 以及存储在 Customer 记录中但 Customer Type 表中不存在的所有 CustomerType 值。一旦用户从查看进入编辑,更新集合以仅使用 CustomerType 表中的那些项目。当用户进入查看模式时,切换回合并的集合。

关于WPF/XAML - 允许 ComboBox 具有不在 ItemsSource 中的 SelectedValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10659195/

相关文章:

c# - WPF WebBrowser 控件 - 如何抑制脚本错误?

.net - 将 XAML 控件从 WPF 应用程序复制到类库后出现问题

c# - 更改 InkToolbar 的颜色 [UWP]

C# FlowDocument RichTextBox 对齐不持久

javascript - Kendo UI 组合框获得焦点

c# - MYSQL 空值干扰 C# 应用程序

wpf - 在 "old"DataContext 中调用 RelayCommand

xaml - 如何将 Observable Collection 的整个元素绑定(bind)到 Xamarin Forms 中的 ContentView

c# - 为什么 DependencyProperty.UnsetValue 被传递到 Equals()

c# - 更改 ComboBox 边框颜色 - SelectedIndex 更改时闪烁