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;}
?