如何从UI添加项目到ComboBox?

时间:2013-05-29 06:14:23

标签: c# wpf mvvm combobox

好吧也许我有点愚蠢,但我找不到一种方法可以将项目添加到我的Combobox并将其设为SelectedItem。那我错过了什么?

当前代码

LoginV.XAML

<ComboBox Height="23" Margin="102,2,0,0" VerticalAlignment="Top" HorizontalAlignment="Left" Width="155"
          IsEditable="True" 
          DisplayMemberPath="Loginname"
          ItemsSource ="{Binding alleBenutzer}"
          SelectedItem="{Binding selectedBenutzer}"/>

LoginVM.CS

    public List<User> alleBenutzer{ get; set; }
    public User selectedBenutzer
    {
        get { return _selectedBenutzer; }
        set
        {
            _selectedBenutzer = value;

            if (selectedBenutzer != null)
            {
                //do stuff
            }

            RaisePropertyChanged(() => Reg(() => benutzerEinrichtungen));
        }
    }

User.cs

public class User
    {
        public int Id { get; set; }
        public string Loginname { get; set; }
    }

摘要

我如何提供以下行为?
用户符文应用程序在Combobox控件中添加了单词“管理员”,这将导致SelectedItem != null,以便我可以if(selectedBenutzer.Loginname =="Admin") DoStuff;

2 个答案:

答案 0 :(得分:0)

ObservableCollection使用List代替alleBenutzer

private ObservableCollection<string> _alleBenutzer;
public ObservableCollection<string> alleBenutzer
{
    get
    {
        return _alleBenutzer;
    }
    set
    {
        _alleBenutzer= value;
        RaisePropertyChanged("alleBenutzer");
    }
}
  1. 添加按钮Add user

  2. AddUser()方法添加到ViewModel

    public void AddUser() { alleBenutzer.Add(new User {...}); }

  3. 为按钮分配RelayCommandClick个事件。

  4. RelayCommand

  5. 分配相同的AddUser()ViewModel方法

答案 1 :(得分:0)

好的经过一些进一步的研究后发现我需要绑定到Text属性,其中包含我正在寻找的值

这是一个简单的例子

<强> XAML

    <ComboBox Height="23" HorizontalAlignment="Left" Margin="89,23,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120" 
              IsEditable="True"                  
              ItemsSource="{Binding mySimpleItems}"
              SelectedItem="{Binding mySimpleItem}"
              Text="{Binding myNewSimpleItem}"/>

<强>代码

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            DataContext = new SimpleVM();
        }
    }

    public class SimpleVM
    {    
        private string _mySimpleItem;
        private string _myNewSimpleItem;
        private bool isNew = true;

        #region properties

        public ObservableCollection<string> mySimpleItems { get; set; }

        public string mySimpleItem
        {
            get { return _mySimpleItem; }
            set
            {
                _mySimpleItem = value;
                if (_mySimpleItem != null)
                {
                    isNew = false;
                    MessageBox.Show(_mySimpleItem);
                }
                else
                    isNew = true;
            }
        }

        public string myNewSimpleItem
        {
            get { return _myNewSimpleItem; }
            set
            {
                _myNewSimpleItem = value;

                //if SelectedItem == null
                if (isNew) 
                    if (_myNewSimpleItem == "Super")
                    {
                        mySimpleItem = _myNewSimpleItem;
                        mySimpleItems.Add(_myNewSimpleItem);                            
                    }
            }
        }

        #endregion

        #region cTor

        public SimpleVM()
        {
            var ObCol = new ObservableCollection<string>();

            ObCol.Add("Max");
            ObCol.Add("Dennis");
            ObCol.Add("Lucas");

            mySimpleItems = ObCol;
        }

        #endregion
    }