Je suis coincé essayer de réutiliser un modèle de contrôle pour une ContentPage
indépendante ainsi qu'un ContentPage
dans un CarouselPage
...Xamarin formes partagées ControlTemplate pour ContentPage et CarouselPage
Le principal problème est que le CarouselPage
ne le fait pas soutenir la propriété ControlTemplate
. Par conséquent, je suis obligé d'insérer un ContentPage
dans le DataTemplate
du CarouselPage
. Ce ContentPage
puis peut obtenir le ControlTemplate
affecté mais je rencontre le problème que le BindingContext
n'est pas la racine du ViewModel
.
Je vais aussi essayer d'expliquer les problèmes avec le code:
J'AVONS créer le modèle comme indiqué ci-dessous.
<!-- Loader view template -->
<ControlTemplate x:Key="LoaderViewTemplate">
<AbsoluteLayout Padding="0" VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand">
<!-- Content -->
<ContentPresenter AbsoluteLayout.LayoutBounds="0, 0, 1, 1" AbsoluteLayout.LayoutFlags="All" />
<!-- Loader -->
<BoxView IsVisible="{TemplateBinding BindingContext.IsBusy}" BackgroundColor="Green" Opacity="0.5" AbsoluteLayout.LayoutBounds="0, 0, 1, 1" AbsoluteLayout.LayoutFlags="All" />
<StackLayout IsVisible="{TemplateBinding BindingContext.IsBusy}" Padding="6" BackgroundColor="Gray" Orientation="Horizontal" AbsoluteLayout.LayoutBounds="0.5, 0.5, -1, -1" AbsoluteLayout.LayoutFlags="PositionProportional">
<ActivityIndicator Color="White" IsRunning="{TemplateBinding BindingContext.IsBusy}" VerticalOptions="Center" WidthRequest="20" HeightRequest="20" />
<Label TextColor="White" Text="Loading..." VerticalOptions="Center" />
</StackLayout>
</AbsoluteLayout>
</ControlTemplate>
Le modèle est fonctionne correctement pour le ContentPage
indiqué ci-dessous.
<ContentPage ...
ControlTemplate="{StaticResource LoaderViewTemplate}">
<StackLayout HorizontalOptions="Center" VerticalOptions="Center">
...
</StackLayout>
</ContentPage>
Mais il ne fonctionne pas dans le CarouselPage
comme indiqué ci-dessous.
<CarouselPage ...
ItemsSource="{Binding Tournament.Rounds}">
<CarouselPage.ItemTemplate>
<DataTemplate>
<ContentPage ControlTemplate="{StaticResource LoaderViewTemplate}">
...
</ContentPage>
</DataTemplate>
</CarouselPage.ItemTemplate>
</CarouselPage>
Le BindingContext
dans le CarouselPage
devient un TournamentRoundModel
de la collection Tournament.Rounds
.
Est-ce que quelqu'un a une idée sur la façon dont je peux atteindre la racine du ViewModel
dans le ContentPage
indépendant et le CarouselPage
imbriquée ContentPage
?
Cordialement, Jop Middelkamp
Cela a résolu mon problème! Merci G. Sharada! –