如何解决如何在 Xamarin XAML
我想将 x:DataType
与 BindingContext
一起使用,如下所示。
<ContentPage
x:DataType="local:MainPageviewmodel">
<ContentPage.BindingContext>
<local:MainPageviewmodel />
</ContentPage.BindingContext>
<Label
x:DataType="local:Titleviewmodel"
BindingContext ="{Binding Innerviewmodel}"
Text="{Binding Title}" />
</ContentPage>
抱歉@Jason,我之前的模拟代码过于简化而导致误导..因此我更新了我的模拟代码,如下所示。
public class MainPageviewmodel
{
private Titleviewmodel _innerviewmodel;
public Titleviewmodel Innerviewmodel
{
get => _innerviewmodel;
set => SetProperty(ref _innerviewmodel,value);
}
}
public class Titleviewmodel
{
private string _title;
public string Title
{
get => _title;
set => SetProperty(ref _title,value);
}
}
我不使用 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
属性。
<Label
BindingContext ="{Binding Innerviewmodel}"
Text="{Binding Title}" />
因此,我放弃使用如下所示的 x:null
编译绑定。
<Label
x:DataType="x:null"
BindingContext ="{Binding Innerviewmodel}"
Text="{Binding Title}" />
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。