WPF: команда SelectionChanged запускается при выгрузке UserControl - PullRequest
0 голосов
/ 04 июля 2018

Я работаю над мастером приложений, где я поддерживаю мастера в список с именем List<ViewmodelsForWizard>.

Я использовал один и тот же UserControl UCView для рендеринга двух разных страниц, просто подправив значения ViewModel, хранящиеся в List<ViewmodelsForWizard>.

Проблема в том, что SelectionChangedCommand для предыдущей страницы срабатывает при загрузке следующей страницы. (На обеих страницах используется один и тот же UserControl UCView и ViewModel)

MainWindow

<Grid DataContext="{Binding currentWizard}">
        <Grid.Resources>
            <DataTemplate DataType="{x:Type viewmodel}">
                <local:UCView DataContext="{Binding}"/>
            </DataTemplate>
        </Grid.Resources>
        <ContentControl Content="{Binding}" />
</Grid>

У меня есть следующее ViewModel:

//all other properties and commands
private ICommand selectionChangedCommand;
    public ICommand SelectionChangedCommand
    {
        get
        {
            if (selectionChangedCommand == null)
                selectionChangedCommand = new DelegateCommand(OnSelectionChanged());
            return selectionChangedCommand;
        }
        set
        {
            selectionChangedCommand = value;
        }
    }
//all other properties and commands    

Выбор изменен в UCView

<ComboBox ItemsSource="{Binding items}"
                  DisplayMemberPath="data"
                  SelectedValue="{Binding selected}">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="SelectionChanged">
                    <i:InvokeCommandAction Command="{Binding SelectionChangedCommand}" />
                </i:EventTrigger>
            </i:Interaction.Triggers>
</ComboBox>

Любая помощь будет великолепна. Спасибо.

...