0

私はMVVMLightの初心者です。パノラマタブが変更された後、何らかのメソッドを呼び出したいです。選択したパノラマ タブに関する情報を知りたいです。問題は、HandlePanoramaViewSelected メソッドが呼び出されないことです。

私はそれを機能させることができません。何が悪いのかわからない

xaml:

<controls:Panorama x:Name="mainViewPanorama">
            <i:Interaction.Triggers>
                <i:EventTrigger EventName="SelectionChanged">
                    <cmd:EventToCommand Command ="{Binding PanoramaSelectedViewCommand, Mode=OneWay}"
                                        CommandParameter="{Binding SelectedValue, ElementName=mainViewPanorama}" />
                </i:EventTrigger>
            </i:Interaction.Triggers>
</controls:Panorama>

コンストラクタ:

PanoramaSelectedViewCommand = new RelayCommand<SelectionChangedEventArgs>(x => HandlePanoramaViewSelected(x));

ビューモデル:

public RelayCommand<SelectionChangedEventArgs> PanoramaSelectedViewCommand { get; set; }

private void HandlePanoramaViewSelected(SelectionChangedEventArgs args)
{
// do something
}
4

1 に答える 1

1

2 つの異なるアプローチを混在させています。次の例のうち 1 つだけを実行してください。

イベント引数を渡す

XAML:

<controls:Panorama x:Name="mainViewPanorama">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="SelectionChanged">
            <cmd:EventToCommand Command ="{Binding PanoramaSelectedViewCommand}"
                                PassEventArgsToCommand="True" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</controls:Panorama>

プロパティとハンドラ:

public RelayCommand<SelectionChangedEventArgs> PanoramaSelectedViewCommand { get; set; }

private void HandlePanoramaViewSelected(SelectionChangedEventArgs args)
{
    // do something
}

コンストラクタ:

PanoramaSelectedViewCommand = new RelayCommand<SelectionChangedEventArgs>(HandlePanoramaViewSelected);



コマンド パラメータを渡す

XAML:

<controls:Panorama x:Name="mainViewPanorama">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="SelectionChanged">
            <cmd:EventToCommand Command ="{Binding PanoramaSelectedViewCommand}"
                                CommandParameter="{Binding Path=SelectedItem, ElementName=mainViewPanorama}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</controls:Panorama>

プロパティとハンドラ:

public RelayCommand<object> PanoramaSelectedViewCommand { get; set; }

private void HandlePanoramaViewSelected(object selectedItem)
{
    // do something
}

コンストラクタ:

PanoramaSelectedViewCommand = new RelayCommand<object>(HandlePanoramaViewSelected);
于 2012-10-23T17:44:35.613 に答える