Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#通过鼠标或键盘更改WPF选择_C#_Wpf_Combobox_Keyboard_Selectionchanged - Fatal编程技术网

C#通过鼠标或键盘更改WPF选择

C#通过鼠标或键盘更改WPF选择,c#,wpf,combobox,keyboard,selectionchanged,C#,Wpf,Combobox,Keyboard,Selectionchanged,我已经在我的项目中插入了一个WPF组合框。目前,我在组合框中有一个keydown事件。现在我有一个问题,我也会选择一个项目与鼠标。如果我使用selectionchanged事件,如果通过键盘更改,它也将执行。如果我使用mousekeydown事件,如果我不知道如何获取单击的项目,它也会起作用。见示例: private void CMB_Adresse_KeyUp(object sender, KeyEventArgs e) { try

我已经在我的项目中插入了一个WPF组合框。目前,我在组合框中有一个keydown事件。现在我有一个问题,我也会选择一个项目与鼠标。如果我使用selectionchanged事件,如果通过键盘更改,它也将执行。如果我使用mousekeydown事件,如果我不知道如何获取单击的项目,它也会起作用。见示例:

 private void CMB_Adresse_KeyUp(object sender, KeyEventArgs e)
        {
            try
            {
                if (e.Key == System.Windows.Input.Key.Down || e.Key == System.Windows.Input.Key.Up)
                {
                    Properties.Settings.Default.CMB_Adresse_Temp = ((string)CMB_Adresse.SelectedItem);
                }
                else
                {

在WPF中实现这一点的正确方法是创建一个ViewModel来保存值和所选值的列表,并将组合框
ItemsSource
SelectedItem
绑定到该列表。这样,如果用户使用鼠标、键盘或在计算机的RAM中放置磁铁来选择项目,您就不必担心。HighCore是正确的。一般来说,在使用WPF时不应该使用事件,尤其是OnSelectedItemChanged之类的东西。另一方面,如果你想写WPF控件(不是用户控件),那么你应该使用keyup和其他东西。。。