透视带有视图的PivotItem的UWP

时间:2017-05-30 14:32:19

标签: xaml xamarin uwp mvvmcross uwp-xaml

获得清晰的观点。 我正在使用MvvMCross和UWP。

父模型

public class TabHost : MvxViewModel
{
    private IList<TabPage> _tabPages;
    public IList<TabPage> TabPages
    {
        get { return _tabPages; }
        set
        {
            _tabPages = value;
            RaisePropertyChanged(() => TabPages);
        }
    }
}

TabPage对象

public class TabPage
{
    public string Title {get;set;}
    public Type ViewModelType {get;set;}
}

我创建了一个名为TabControl的Pivot覆盖,所以我的xaml是这样的:

<controls:TabControl x:Name="TabHostControl" ItemsSource="{Binding TabPages}">
    <controls:TabControl.HeaderTemplate>
        <DataTemplate>
             <TextBlock Text="{Binding Title}" Foreground="White"/>
        </DataTemplate>
    </controls:TabControl.HeaderTemplate>
    <controls:TabControl.ItemTemplate>
        <DataTemplate>
            <Frame x:Name="ViewToLoad" />
        </DataTemplate>
    </controls:TabControl.ItemTemplate>
</controls:TabControl>

我的正确显示标题的标签页。但是我希望视图的内容加载到PivotItem中。

  • 我尝试渲染时将每个项目导航到视图但是那样 没有工作。
  • 还尝试(在渲染时)设置内容。我能够创造 视图并绑定ViewModel,但仅在设置内容时 显示对象的名称,而不是xaml控件。
  • 尝试使用UserControls,但每个视图都有自己的上下文,所以根本没有工作

是否可以为PivotItem设置视图? (使用MvvmCross offcourse!) 或者通过dataitem模板的格式推送内容?

1 个答案:

答案 0 :(得分:0)

你为什么使用框架?

您可以使用ContentControl来显示页面,但这并不容易。

我在使用其他框架之前做过,但它可能类似:

您可以使用ContentControl和行为 在Behavior中,只需创建一个属性,它就可以是您要在其中显示的视图页面的名称,在代码中创建视图的实例以及视图的视图模型,使用View和ViewModel进行绑定(使用DataContext property)最后在ContentControl的内容中注入此视图。

如果你真的想使用Frame,解决方案非常相似。