我不确定为什么会这样 在XAML,我有
<ComboBox x:Name="cb" HorizontalAlignment="Left" VerticalAlignment="Top" Width="140" Height="25"/>
在后面的代码中,我有
cb.ItemsSource = new string[] { null, "Test1", "Test2", "Test3" };
当我加载UI时,组合框具有空集。现在,如果我将其更改为&#34; Test1&#34;,我没有选择恢复为null。在用户界面,我看到&#34; Test1&#34;,&#34; Test2&#34;和&#34; Test3&#34;。空字符串不会在组合框中创建新条目。在我的例子中,null是一个有效的选项。如果我将null更改为,它可以正常工作。但我需要null才能显示为有效选项。 有没有人看到这种行为?
答案 0 :(得分:1)
我通常使用类似&#34的字符串值;没有选择&#34;用户显示而不是null。 这可以避免您遇到的问题,并且对用户来说更清楚。
在向数据库发送内容之前,我重新翻译了#34;没有选择&#34;为空。
如果我绑定到复杂项目,我还会创建一个表示null的项目。
通常这个&#34;没有选择&#34;文本甚至被本地化并存储在资源文件中,因此它适用于不同语言的用户。
答案 1 :(得分:1)
不使用绑定到字符串数组,而是使用对象数组。
public class DisplayValuePair
{
public DisplayValuePair(string d, string v) { this.Display = d; this.Value = v; }
public string Display { get; set; }
public string Value { get; set; }
}
并将数据绑定为
cb.ItemsSource = new DisplayValuePair[] {
new DisplayValuePair("", null),
new DisplayValuePair("Test1", "Test1"),
new DisplayValuePair( "Test2", "Test2" ),
new DisplayValuePair( "Test3", "Test3" ) };
和xaml as
<ComboBox x:Name="cb" HorizontalAlignment="Left" VerticalAlignment="Top" DisplayMemberPath="Display" SelectedValuePath="Value" Width="140" Height="25"/>
因此,您无需在加载/保存时替换任何值。