xaml - Xamarin TabbedPages MVVM 绑定(bind)

标签 xaml xamarin xamarin.forms

如何绑定(bind)不同 View 模型的标签页? 为了更清楚,我有这个标签页:

<TabbedPage.Children>     
    <tabPages:Page1/>
    <tabPages:Page2/>
    <tabPages:Page3/>
</TabbedPage.Children>

这 3 个页面有不同的 View 模型。但是,问题是每个页面的 View 模型都不会绑定(bind)。有没有特定的方法可以做到这一点?

为了测试每个页面的 View 模型是否有效,我在标签页中内联了代码: 例如

<TabbedPage.Children>
    <ContentPage Title="Test">
    <Label Text="{Binding TestBind}"/>
    </ContentPage>
</TabbedPage.Children>

并将其绑定(bind)到选项卡式页面(父级)的 View 模型 - 此方法有效。但是,如果我单独进行, View 模型将不会绑定(bind)。 例如

public class Page1ViewModel : BaseViewModel
{
        public Page1ViewModel()
        {
            TestBind = "Test";
        }
        private string _TestBind;
        public string TestBind
        {
            get { return _TestBind; }
            set { SetProperty(ref _TestBind, value); }
        }
}

这样使用,不会绑定(bind)

最佳答案

我已经成功了,所以这就是我所做的:

  <TabbedPage.Children>
        <views:ChildPage1>
            <views:ChildPage1.BindingContext>
                <viewModels:ChildPage1ViewModel/>
            </views:ChildPage1.BindingContext>
        </views:ChildPage1>
        <views:ChildPage2>
            <views:ChildPage2.BindingContext>
                <viewModels:ChildPage2ViewModel/>
            </views:ChildPage2.BindingContext>
        </views:ChildPage2>
    </TabbedPage.Children>

我使用元素的绑定(bind)上下文属性来设置它。

关于xaml - Xamarin TabbedPages MVVM 绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47669539/

相关文章:

c# - 如何在 WPF 中绑定(bind)用作 DataGridTemplateColumn 的用户控件失败

c# - 如何在 C++ 运行时组件内的 Windows Phone 8.1 XAML 应用程序中使用 C++ dll

c# - 抛出 'Foundation.You_Should_Not_Call_base_In_This_Method' 类型的异常

layout - xamarin.Forms 仅滚动页面的一部分

ios - Xamarin.Forms - 区分后台和前台应用程序中心推送通知

c# - 如何在 XAML 中指定 DataGrid 的 ItemsSource 类型?

c# - 当对象用于显示时,组合框值在选择后消失

C# Xamarin OnClick 函数

azure - 需要帮助来处理 Xamarin 表单的照片

c# - 删除sqlite中的where in子句