我建立了自己的用户控件,并将其放置在代码中几次(恰好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中添加一些内容?