【问题标题】:Binding two viewModel to one view将两个 viewModel 绑定到一个视图
【发布时间】:2020-07-04 20:49:17
【问题描述】:

我正在尝试将我已启动两个原始视图模型的 MasterViewModel 绑定到一个视图。但我没有得到任何数据,所以我必须做错绑定。我找到了几个帖子

我试过了 在 Xaml 中

  <Label
                                        x:Name="SectionRequired"
                                        Grid.Row="2"
                                        HorizontalOptions="End"
                                        IsVisible="{Binding PostViewModel.IsRequired, Source={x:Reference PostViewModel}}"
                                        Text="{x:Static resources:AppResources.AlertRequired}"
                                        TextColor="Red" />

并且也遵循了这个解决方案,但我得到一个 expcetion 其使用的 lika 标记扩展 'local1:PostViewModel' 像标记扩展一样使用,但不是从 MarkupExtension 派生的。

https://stackoverflow.com/questions/50307356/multiple-bindingcontexts-on-same-contentpage-two-different-views

My Master

class MasterPostsViewModel : BaseViewModel
    {
        public PostViewModel postViewModel { get; set; }
        public CategoriesViewModel categoriesViewModel { get; set; }

        public MasterPostsViewModel()
        {
            postViewModel = new PostViewModel();
            categoriesViewModel = new CategoriesViewModel();    
        }

    }
}

内容页面

我已将绑定设置为此处的一个字段并且有效,但必须为整个页面执行此操作不是我想要的。

  MasterPostsViewModel ViewModel;

   protected override void OnAppearing()
        {
            base.OnAppearing();
          
            BindingContext = ViewModel = new MasterPostsViewModel();
            
            NameRequired.IsVisible = ViewModel.postViewModel.IsRequired;

        }

你能帮忙吗

【问题讨论】:

    标签: xamarin.forms


    【解决方案1】:

    而不是

    IsVisible="{Binding PostViewModel.IsRequired, Source={x:Reference PostViewModel}}"
    

    随便用

    IsVisible="{Binding postViewModel.IsRequired}"
    

    您的属性名称是postViewModel 是小写

    另外,去掉这一行 - 它会破坏您在 XAML 中设置的绑定

    NameRequired.IsVisible = ViewModel.postViewModel.IsRequired;
    

    【讨论】:

    • 嗨,我仍然没有找到该属性 [0:] 绑定:在“Balt.ViewModel.MasterPostsViewModel”上找不到“NameEntry”属性,目标属性:“Xamarin.Forms.Entry” .Text'
    • 我假设“NameEntry”是postViewModelcategoriesViewModel 的属性,而不是MasterPostsViewModel 的直接属性。
    • 您在发布的任何代码中都没有显示“NameEntry”,所以我无法告诉您具体做错了什么。但可能你的绑定路径不正确。
    • 我的错误对不起,它不仅仅是名称条目它的所有属性。我必须在我的 Master 中重新启动所有这些吗?
    • 我不知道。我只能评论您实际发布的代码。 IsVisible 是否按照我的演示在修复后给您一个错误?
    猜你喜欢
    • 2021-04-22
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多