C# 如何使用Caliburn将轴集中在ViewModel中的特定轴项目上

C# 如何使用Caliburn将轴集中在ViewModel中的特定轴项目上,c#,mvvm,windows-phone,caliburn.micro,C#,Mvvm,Windows Phone,Caliburn.micro,在通用应用程序(WP8.1项目)中使用Caliburn MVVM模式,我希望从代码中,将数据透视页的焦点放在特定的数据透视项上,从该页的Caliburn ModelView中。请注意,有时我对使用Conductor类不感兴趣,因为MyPivot页面的所有数据透视项都有一个公共数据源,所以我认为在这种情况下,为每个数据透视项提供多个ViewModel是没有用的 我想在MyPivotViewModel中做的是在代码隐藏中应该这样做: pvMyPivot.SelectedIndex =

在通用应用程序(WP8.1项目)中使用Caliburn MVVM模式,我希望从代码中,将数据透视页的焦点放在特定的数据透视项上,从该页的Caliburn ModelView中。请注意,有时我对使用Conductor类不感兴趣,因为MyPivot页面的所有数据透视项都有一个公共数据源,所以我认为在这种情况下,为每个数据透视项提供多个ViewModel是没有用的

我想在MyPivotViewModel中做的是在代码隐藏中应该这样做:

        pvMyPivot.SelectedIndex = 2;


任何建议和示例代码都将不胜感激;-)

如果需要,您可以从viewmodel绑定到SelectedIndex或SelectionChanged事件或两者。。。只需复制事件签名,因为SelectedIndex将是一个整数属性

private int _pivotindex;
public int PivotIndex{
    get{ return _pivotindex;}
    set{
         _pivotindex = value;
         NotifyOfPropertyChanged();
    }
}

public void SelectionChanged( SelectionChangedEventArgs e){

}
然后在xaml中

<Pivot  SelectedIndex="{Binding PivotIndex, Mode=TwoWay}"
        cm:Message.Attach="[Event SelectionChanged] = [Action SelectionChanged($eventArgs)]"    />

例如

另一个答案可能是将泛型类型替换为Pivot,但可能必须从那里进行修改,以合并更改以适应WinRT,而不是Panorama中的Silverlight

<Pivot  SelectedIndex="{Binding PivotIndex, Mode=TwoWay}"
        cm:Message.Attach="[Event SelectionChanged] = [Action SelectionChanged($eventArgs)]"    />