Доступ к родительскому контексту привязки из ресурса dataTemplate (x: Reference) - PullRequest
0 голосов
/ 08 декабря 2018

Я получил страницу, на которой я загружаю несколько шаблонов элементов управления, учитывая некоторую бизнес-логику, связанную со свойством в моей viewModel.

<ContentView x:Name="ContentView"  ControlTemplate="{Binding ItemControlTemplate}">
</ContentView>

Внутри этого шаблона элемента управления я получил CarouselViewControl, который использует DataTemplate.

<carousel:CarouselViewControl x:Name="CarouselViewMapTemplate" Position=" 
    {TemplateBinding BindingContext.CarouselPosition}" 
    PositionSelectedCommand="{TemplateBinding BindingContext.PositionChanged}" 
    Orientation="Horizontal" AnimateTransition="True" IsSwipeEnabled="False" 
    ItemsSource="{TemplateBinding BindingContext.Items}" InterPageSpacing="10" 
    ItemTemplate="{StaticResource ItemsDataTemplate }">
</carousel:CarouselViewControl>

И внутри этого DataTemplate я хотел бы привязать свойство в ViewModel, которое такжеDataTemplate.

 <maps:SfMaps  x:Name="sfmap" EnablePanning="False" EnableZooming="False" BackgroundColor="Transparent">
            <maps:SfMaps.Layers>
                <maps:ShapeFileLayer x:Name="ShapeLayer" Uri="FRA_adm0.shp" MarkerTemplate="{Binding Parent.BindingContext.MarkerDataTemplate}">

                </maps:ShapeFileLayer>
            </maps:SfMaps.Layers>
        </maps:SfMaps>

Как мне этого добиться?Я только что попытался

{Binding Parent.BindingContext.MyProperty}

, но это не работает.Я также копал со свойством Source привязки, , но это не сработает, так как у меня нет ссылки в моем DataTemplate, используемом в качестве ресурса на уровне приложения ResourceDictionary.

Это НЕ ДАЕТВ результате он не находит carouselView в ResourceDictionary:

"{Binding Path=BindingContext.DisplayMarkerTemplateCommand, Source={x:Reference carouselView}}"

Невозможность сделать это разрушает весь смысл наличия ResourceDictionary и очистки шаблонов, если привязка не работает с ним с XAML.

СПАСИБО!

...