代码之家  ›  专栏  ›  技术社区  ›  Boris Grunwald

设置组合框的选定值

  •  0
  • Boris Grunwald  · 技术社区  · 7 年前

    我想设置组合框的选定值

    我从数据库接收到一个DataTable,如下所示:

    enter image description here

    此Datatable已绑定到此组合框。

    <ComboBox
        DisplayMemberPath="KommuneNavn"
        SelectedValuePath="KommuneNr"
        ItemsSource="{Binding KommuneNavne}"
        SelectedValue="{Binding KommuneNr, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"        
        Margin="3"
        IsEnabled="{Binding IsUdenlandskAdresse, Converter={StaticResource BooleanNotConverter}}" />
    

    在我的viewmodel中,我有一个特定的 KommuneNr 存储在属性中。我想将我的组合框设置为显示 KommuneNavn 与此匹配 KommuneNr公司 .

    例子:

    我有 KommuneNr公司 101存储在我的viewmodel中 KommuneNavn公司 与此匹配的是 København 然后,我希望将我的组合框设置为 哥本哈根 .

    这很难解释,我希望我说得有道理。否则请随意询问。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Celso Lívero    7 年前

    KommuneNavne 必须是 ObservableCollection ,并且在 ViewModel 您应该实施 INotifyPropertyChanged (本例中未描述)

    <ComboBox 
          ItemsSource="{Binding KommuneNavne}"
          SelectedValue="{Binding KommuneNr, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}" 
          DisplayMemberPath="KommuneNavn"
          SelectedValuePath="KommuneNr"
    />
    

    视图模型

    public class MyViewModel : INotifyPropertyChanged
    {
    
        public ObservableCollection<KommuneNavn> KommuneNavne
        {
            get { value = _kommuneNavne; } //=> _kommuneNavne;
            set
            {
                _kommuneNavne = value;
                OnPropertyChanged(nameof(KommuneNavne));
            }
        }
    
        public long KommuneNr
        {
            get { value = _kommuneNr; } //=> _kommuneNr;
            set
            {
                if (_kommuneNr == value) return;
                _kommuneNr = value;
                OnPropertyChanged(nameof(KommuneNr));
            }
        }
    
    
        private void SetValue(int valueToSet)
        {
            KommuneNr = valueToSet;
        }
    
    }