Почему Wpf User Control вызывает метод несколько раз? - PullRequest
1 голос
/ 03 июля 2019

Я создал свой собственный пользовательский элемент управления и поместил его в код несколько раз (ровно 4 раза). Это Combobox, и когда выбор изменяется, метод должен быть вызван. Вызов метода работает нормально. Но проблема в том, что этот метод вызывается 4 раза (количество размещенных пользовательских контролов).

<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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...