Próbuję użyć WPFToolkit.Wizard w aplikacji korzystającej z modelu projektowego MVVM.

W tej chwili mam trudności z powiązaniem RelayCommand (dziedziczonych po ICommand) z przyciskami Następny/Poprzedni/Zakończ.

Widzę, że czarodziej podnosi wydarzenia, ale to złamałoby paradygmat.

Polecenie jest zdefiniowane:

    public ICommand NextStage
    {
        get
        {
            return _NextStage ?? (
                _NextStage = new RelayCommand(param => PrepNextStep(),
                                              param => Page((PageIndexes)CurrentStage).IsDirty
                                             ));

        }   //  get
    }   //  public ICommand NextStage

XAML to:

    <xctk:Wizard    x:Name="wizMain"
                    Grid.Row="1"
                    FinishButtonClosesWindow="True" 
                    ItemsSource="{Binding wizardPages}" 
                    Background="White"
                    ExteriorPanelMinWidth="100"
                    HelpButtonVisibility="Hidden"
                    Next="{Binding Path=NextStage}"
                    >
    </xctk:Wizard>

Błąd, który jest zgłaszany w czasie wykonywania to:

„Podaj wartość w „System.Windows.Data.Binding” zgłosił wyjątek.' Numer wiersza „33” i pozycja wiersza „25”.

Każda pomoc byłaby bardzo mile widziana.

TIA, Ray.

0
Ray Hastie 20 listopad 2018, 00:41

1 odpowiedź

Najlepsza odpowiedź

Next to zdarzenie, a nie właściwość zależności, którą można powiązać z właściwością źródłową ICommand.

Możesz dodać odwołanie do System.Windows.Interactivity.dll i użyj wyzwalacza interakcji, aby wywołać polecenie, gdy kreator wywoła zdarzenie:

<xctk:Wizard ... xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Next">
            <i:InvokeCommandAction Command="{Binding NextStage}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</xctk:Wizard>
1
mm8 20 listopad 2018, 14:04