[英]Binding to a combobox and allow editing: Selected Item becomes empty
我有一些綁定問題,我的組合框下拉菜單項都有字符串的ObservableCollection
。 應該可以從下拉菜單中選擇一個值,或者手動插入一些文本,或者結合使用這兩種方法。
<ComboBox ItemsSource="{Binding AvailableAddressSymbols}"
Text="{Binding SelectedItem.LowerBound,
ElementName=combobox_sys_data_protection}"
HorizontalAlignment="Right"
IsEditable="True"
DropDownOpened="SymbolAddressRefress_Dropdownopend" />
<ComboBox ItemsSource="{Binding AvailableAddressSymbols}"
Text="{Binding SelectedItem.UpperBound,
ElementName=combobox_sys_code_protection}"
IsEditable="True"
DropDownOpened="SymbolAddressRefress_Dropdownopend" />
我綁定到該組合框的text屬性,以允許手動編寫文本。 一切正常,但我有多個組合框之一。 打開下拉列表后,組合框的可用項目會刷新。
現在出現了問題:當我在combobox1中選擇一個值並且想要在combobox2中選擇一個值時,combobox1中的值被設置為“”。
刷新會清除項目列表並添加新值,我認為這是問題所在,但我需要刷新它,因為可能會有新值。
internal void refreshAvailableAddressSymbols()
{
AvailableAddressSymbols.Clear();
for (int i = 0;
i < Database.ProjectConfiguration.AddressSymbols.Count;
i++)
{
AvailableAddressSymbols.Add(
Database.ProjectConfiguration
.AddressSymbols[i].StartAddress);
AvailableAddressSymbols.Add(
Database.ProjectConfiguration
.AddressSymbols[i].EndAddress);
}
}
一些背景:
在WPF中使用ComboBox
時, SelectedItem
必須始終為下拉Items
之一。
這意味着:當您Clear()
綁定到ItemsSource
的ObservalCollection時,上述條件將不再成立,並且ComboBox
清除SelecetdItem
。
為避免這種情況,有兩種策略:
記住您在局部變量中選擇的項目,清除您的項目,將項目設置為新設置,然后將SelectedItem設置為下拉列表中現在可用的項目。
不要Clear()
您的主題,而要更新列表(添加新元素,刪除舊元素)。 只要不刪除SelectedItem
一切都會正常
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.