C# 如何在Xamarin XAML中使用带BindingContext的编译绑定

C# 如何在Xamarin XAML中使用带BindingContext的编译绑定,c#,xaml,xamarin.forms,data-binding,compiled-bindings,C#,Xaml,Xamarin.forms,Data Binding,Compiled Bindings,我想将x:DataType与BindingContext一起使用,如下所示 抱歉@Jason,我之前的模拟代码太过简化,不会引起误导。。因此,我更新了模拟代码,如下所示 public类MainPageViewModel { 私有所有权模型(innerViewModel);; 公共标题视图模型InnerViewModel { get=>\u innerViewModel; set=>SetProperty(ref\u innerViewModel,value); } } 公共类标题模型 { 私

我想将
x:DataType
BindingContext
一起使用,如下所示


抱歉@Jason,我之前的模拟代码太过简化,不会引起误导。。因此,我更新了模拟代码,如下所示

public类MainPageViewModel
{
私有所有权模型(innerViewModel);;
公共标题视图模型InnerViewModel
{
get=>\u innerViewModel;
set=>SetProperty(ref\u innerViewModel,value);
}
}
公共类标题模型
{
私有字符串\u标题;
公共字符串标题
{
获取=>\u标题;
set=>SetProperty(参考标题,值);
}
}

我不使用
InnerViewModel.Title
进行绑定的原因是
PropertyChanged
事件仅检查属性路径。因此,如果我更新
InnerViewModel.Title
,它将引发
PropertyChanged
事件,路径为
“Title”
,而不是
“InnerViewModel.Title”
。这会引起一个问题

我知道我可以像下面这样解决

public class MainPageViewModel
{
    private void OnInnerViewModelPropertyChanged(object sender, PropertyChangedArgs e)
    {
        // ...
        RaisePropertyChanged(this, "InnerViewModel.Title");
    }
}
但是,我更喜欢更改
BindingContext
而不是中继
PropertyChanged
事件


然而,由于以下原因,它构建失败

错误XFC0045:绑定:在“Local.TitleViewModel”上找不到属性“InnerViewModel”

即使像下面这样删除
x:DataType
,仍然会失败,因为MainPageViewModel没有
Title
属性


因此,我放弃使用编译绑定,使用
x:null
如下



能否添加ViewModel代码?还有,为什么有这么多的ViewModels?添加相关的VM代码可能会帮助我更好地理解这种情况。您只能绑定到公共属性<代码>InnerViewModel不是属性。此外,(解决该问题后)您只需使用
“{Binding InnerViewModel.Title}”作为路径,无需再次为
标签指定
绑定上下文。。你是说实际的ViewModel代码吗?不,这向我解释了它看起来像是一个模拟的,Jason刚刚回答了你的问题question@ibocon您是否尝试过公共标题视图模型InnerViewModel{get;}