我有这个示例项目:
BaseView.xaml::这是一个ContentPage
与ContentPage.ControlTemplate
一起使用。它与 BaseViewModel 绑定。
StartPage.xaml :这是主页。这是BaseView类型,并与 StartPageViewModel 绑定。
这是BaseView的ContentPage.ControlTemplate
<ContentPage.ControlTemplate>
<ControlTemplate>
<StackLayout>
<Label BackgroundColor="Green" Text="{Binding BindingContext.TestoBASE}"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand" />
<Label BackgroundColor="Red" Text="{TemplateBinding BindingContext.TestoSTART}"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand" />
<ContentPresenter VerticalOptions="CenterAndExpand" HorizontalOptions="CenterAndExpand"></ContentPresenter>
</StackLayout>
</ControlTemplate>
</ContentPage.ControlTemplate>
这是StartPage的内容:
<ContentPage.Content>
<StackLayout>
<Label BackgroundColor="Yellow" Text="{Binding TestoSTART}"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand" />
<Label BackgroundColor="Blue" TextColor="Yellow" Text="{TemplateBinding BindingContext.TestoBASE}"
VerticalOptions="CenterAndExpand"
HorizontalOptions="CenterAndExpand" />
</StackLayout>
</ContentPage.Content>
两个ViewModel只有一个属性:
所有这些都是这样的:
public class BaseViewModel : INotifyPropertyChanged
{
private string _TestoBASE = "BASE";
public string TestoBASE
{
get { return _TestoBASE; }
set
{
_TestoBASE = value;
OnPropertyChanged("TestoBASE");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string name)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
}
}
如果我尝试运行该应用程序,我希望所有4个标签(基本视图内2个,开始视图内部2个)都显示出来。
其中只有两个是可见的, BaseView 内部的一个具有此绑定文本的文本:
{TemplateBinding BindingContext.TestoSTART}
和 StartPage 内部的具有绑定文字的
{Binding TestoSTART}
如何使所有4个标签可见?
我的目标是为BindingContext
提供一个BindingContext
,与ContentPresenter
将包含的所有possilbe页面中的所有其他...
分开。