Я работаю над мастером приложений, где я поддерживаю мастера в
список с именем 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>
Любая помощь будет великолепна. Спасибо.