Pivot控件MVVM-Light-EventToCommand SelectedIndex发送上一个索引

时间:2012-01-10 19:53:03

标签: wpf xaml windows-phone-7 mvvm mvvm-light

我得到了我要离开的Pivot项目的索引,而不是我要去的Pivot项目。
我已经搜索了一段时间,可以想到一些解决方案,比如在视图中使用事件,然后使用MVVM-Light向ViewModel发送消息。但我宁愿不这样做,我宁愿坚持当前的实现,当然也略有不同。

感谢任何帮助

我的xaml:

    <controls:Pivot x:Name="ContentPivot" Margin="12,0,12,0">
        <i:Interaction.Triggers>
            <i:EventTrigger EventName="SelectionChanged">
                <cmd:EventToCommand Command ="{Binding SelectSlideCommand}"
                                        CommandParameter="{Binding SelectedIndex, ElementName=ContentPivot}" />
            </i:EventTrigger>
        </i:Interaction.Triggers>

        <controls:PivotItem x:Name="PivotItem0" Header="0">
            <Image Source="{Binding ViewingSlides[0].Path}"  HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
        </controls:PivotItem>

        <controls:PivotItem x:Name="PivotItem1" Header="1">
            <Image Source="{Binding ViewingSlides[1].Path}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
        </controls:PivotItem>

        <controls:PivotItem x:Name="PivotItem2" Header="2">
            <Image Source="{Binding ViewingSlides[2].Path}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
        </controls:PivotItem>
    </controls:Pivot>

和c#:

    public RelayCommand<int> SelectSlideCommand;

    SelectSlideCommand = new RelayCommand<int>((pivotItem) => SelectSlideAction(pivotItem));

    void SelectSlideAction(int parameter)
    {
        currentIndex = parameter;

        UpdateViewingSlides();
        Debug.WriteLine("SelectSlideAction: " + parameter);
    }

1 个答案:

答案 0 :(得分:2)

你的Control中是否有`SelectedItem属性...你可以将你的ViewModel中的它连接到TwoWay绑定模式中的属性,以便始终获得更新的值(那么你将不需要这个命令)....你也可以试试

        <i:Interaction.Triggers>
        <i:EventTrigger EventName="SelectionChanged">
            <cmd:EventToCommand Command ="{Binding SelectSlideCommand}"
                                    CommandParameter="{Binding SelectedItem, ElementName=ContentPivot}" />
        </i:EventTrigger>
    </i:Interaction.Triggers>