Я создал свой собственный пользовательский элемент управления и поместил его в код несколько раз (ровно 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?