У меня есть этот пример проекта:
Это ContentPage.ControlTemplate
BaseView
<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 имеют только одно свойство:
- TestoSTART для StartPageViewModel
- TestoBASE из BaseViewModel
все это так:
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 в стартовом представлении) были показаны.
Вместо этого видны только 2 из них, тот, что внутри BaseView , в котором есть текст с этой привязкой:
{TemplateBinding BindingContext.TestoSTART}
и тот, который находится внутри StartPage с текстом с привязкой:
{Binding TestoSTART}
Как сделать видимыми все 4 метки?Моя цель состоит в том, чтобы BindingContext
для BaseView был отделен от всех других BindingContext
всех возможных страниц, которые будет содержать ContentPresenter
.