WPF - Fire comboBox SelectedIndexChanged仅来自用户点击

时间:2015-05-12 09:09:34

标签: c# wpf combobox

我想停止在UI加载时触发ComboBox_SelectionChanged事件。它应该仅在用户在组合框中进行一些更改时才会发生。

为此,我在.xam.cs文件中写了以下内容。

  private void myComboBox_SelectionChanged(object sender,   SelectionChangedEventArgs e)
      {
        ComboBox cb = (ComboBox)sender;
        if (!cb.IsFocused)
        {
            return;
        }
        else
           ViewModel.OnPropertyChanged("MyProperty");
     }

但是当用户进行更改时,这甚至不会触发事件。 我哪里出错?

我知道stackoverflow中有类似的问题。但其中的解决方案对我不起作用。请帮助。

2 个答案:

答案 0 :(得分:2)

找到了解决方案。 我们只需要将Selection_Changed事件与PreviewMouseDown事件结合起来。

could the SelectionChanged event in WPF be handled only for user interaction?

答案 1 :(得分:0)

这是一个示例XAML:

<av:ComboBox x:Name="cmbChargeUnit" HorizontalAlignment="Left" Margin="548,15,0,0" Width="187" ItemsSource="{av:Binding ChargeUnits}" DisplayMemberPath="ChargeUnitDescription" SelectedValue="{Binding SelectedChargeUnit}" VerticalAlignment="Top" Background="#FFCBCBCB" Height="20" IsSynchronizedWithCurrentItem="True"  SelectedIndex="0"  BorderBrush="#FF7070CB"/>

VM:

public ChargeUnit SelectedChargeUnit
    {
        get { return _selectedChargeUnit; }
        set
        {
            _selectedChargeUnit = value;
            OnPropertyChanged("SelectedChargeUnit");
            if (SelectedAttributeId != null)//Only Load when an attribute is entered
            {
                LoadRates();
            }
        }
    }