簡體   English   中英

綁定到組合框並允許編輯:選定項變為空

[英]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

為避免這種情況,有兩種策略:

  1. 記住您在局部變量中選擇的項目,清除您的項目,將項目設置為新設置,然后將SelectedItem設置為下拉列表中現在可用的項目。

  2. 不要Clear()您的主題,而要更新列表(添加新元素,刪除舊元素)。 只要不刪除SelectedItem一切都會正常

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM