【问题标题】:Pivot UWP with PivotItems with views使用带有视图的 PivotItems 透视 UWP
【发布时间】:2017-10-31 02:23:16
【问题描述】:

为了获得清晰的视图。 我正在将 MvvMCross 与 UWP 一起使用。

父模型

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

标签页对象

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 课程!) 还是通过数据项模板的格式推送内容?

【问题讨论】:

    标签: xaml xamarin uwp mvvmcross uwp-xaml


    【解决方案1】:

    你为什么要使用框架?

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

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

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

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

    【讨论】:

    • 谢谢你的回复,我明天试试。让你知道它是否有效!
    猜你喜欢
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多