为什么Wpf用户控件多次调用一个方法?

时间:2019-07-03 09:20:46

标签: wpf event-handling user-controls

我建立了自己的用户控件,并将其放置在代码中几次(恰好4次)。这是一个组合框,更改选择时应调用该方法。调用方法工作正常。但是问题在于该方法被调用了4次(放置的UserControl数量)。

<ComboBox Width="200" HorizontalAlignment="Left" 
                                      ItemsSource="{Binding NodeFileModsVM.CompanyCodeList}" 
                                      SelectedItem="{Binding CompanyVM.SelectedComboBoxItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
                                      materialDesign:HintAssist.Hint="Company Name"
                                      Style="{StaticResource MaterialDesignFloatingHintComboBox}"
                                      Margin="0,0,30,0">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="SelectionChanged">
                    <i:InvokeCommandAction Command="{Binding CompanyVM.CompanySelectionChangedCommand}"/>
                </i:EventTrigger>
            </i:Interaction.Triggers>
</ComboBox>

ViewModel看起来像这样:

    private string _selectedComboBoxItem;
    public string SelectedComboBoxItem
    {
        get { return _selectedComboBoxItem; }
        set
        {
            _selectedComboBoxItem = value;
            OnPropertyChanged(nameof(SelectedComboBoxItem));
        }
    }

    public ICommand CompanySelectionChangedCommand { get; set; }

    public CompanyViewModel()
    {
        CompanySelectionChangedCommand = new RelayCommand(action => this.CompanySelectionChanged());
    }

    public void CompanySelectionChanged()
    {
         //some code that is executed.
    }

我要实现的是更改选择后仅调用一次方法。更改选择后,每个组合框中的值都相同,因此不必多次调用方法。

什么只能在调用方法中更改或添加一次?也许应该在代码后面添加一些代码或在ViewModel中添加一些内容?

0 个答案:

没有答案