(请参阅下面的我自己的答案,我在让这个渗透几天和几天后想出了)我试图在 WPF 中实现以下场景。
我有一个数据网格,它显示数据行以供查看和附加数据输入。这是一个新的应用程序,但有旧数据。
过去的一个特定领域有随机输入的数据。现在我们想将该字段的值限制为特定列表。所以我正在使用 DataGridComboBoxColumn。FWIW 我也尝试过使用包含 ComboBox 的 DataGridTemplateColumn。
在运行时,如果现有值不在列表中,我希望它仍然显示。我似乎无法做到这一点。虽然我尝试了多种解决方案(所有失败),但这里是最合乎逻辑的一个作为起点。
下拉列表的值在名为“months”的 Windows 资源中定义。
<DataGridComboBoxColumn x:Name="frequencyCombo" MinWidth="100" Header="Frequency"
ItemsSource="{Binding Source={StaticResource months}}"
SelectedValueBinding="{Binding Path=Frequency,UpdateSourceTrigger=PropertyChanged}">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="IsSynchronizedWithCurrentItem" Value="False" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
</DataGridComboBoxColumn>
发生的情况是,如果一个值不在列表中,则显示为空白。我已在运行时验证 IsSynchronizedWithCurrentItem 元素确实为 False。它只是没有做我所期望的。
也许我只是在这里走错了路。也许我需要将文本框与组合框结合使用。也许我需要编写一些代码,而不仅仅是 XAML。我花了几个小时尝试不同的事情,并且非常感谢解决方案。我有一些使用这个类或那个控件的建议,但没有解释如何使用它。
非常感谢!