如何使用Caliburn从ViewModel将焦点聚焦到特定的PivotItem上

时间:2014-11-08 08:16:40

标签: c# mvvm windows-phone caliburn.micro

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

我想在MyPivotViewModel中做的是以这种方式在代码隐藏中应该做的事情:

        pvMyPivot.SelectedIndex = 2;

        pvMyPivot.SelectedItem = Pivot2Name;

赞赏任何建议和示例代码; - )

1 个答案:

答案 0 :(得分:1)

如果需要,可以从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)]"    />

例如......

另一个答案可能会更换为通用类型转换,但可能必须从那里修改以包含更改以适应WinRT,而不是在Panorama的情况下Silverlight ...