1

好吧,也许我有点愚蠢,但我找不到将项目添加到我Combobox并将其作为SelectedItem. 那么我想念什么?

当前代码

登录V.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}"/>

登录VM.CS

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

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

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

用户.cs

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

概括

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

4

2 回答 2

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
    }
于 2013-05-29T09:08:32.047 回答
0

使用ObservableCollection而不是Listfor 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. 将相同的分配RelayCommandAddUser()您的方法ViewModel

于 2013-05-29T06:17:18.560 回答