Переопределение унаследованного Datacontext

1

У меня возникает проблема переопределения datacontext, унаследованного от родителя. У меня есть глобальный набор DataContext, после этого раздел концентратора Привязывается к списку в этой модели, который затем распространяется на Listivew. Теперь каждый элемент listview привязан к объекту, который также является DataContext элемента. Но каждый элемент списка имеет вылет. Теперь всплывающее окно наследует элемент DataContext, и это хорошо, но один элемент в Flyout должен быть привязан к элементу исходной глобальной модели.

Поэтому в настоящее время у меня есть следующая страница

<Page
x:Class="LocationSave.HubPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:LocationSave"
Name="root"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:i="using:Microsoft.Xaml.Interactivity"
xmlns:core="using:Microsoft.Xaml.Interactions.Core"
DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
xmlns:data="using:LocationSave.Data"
mc:Ignorable="d" FontFamily="Global User Interface">

<Page.Resources>
    <ResourceDictionary>
        <Flyout  x:Name="Edit_Flyout">
            <Border  DataContext="{Binding}" >
                <StackPanel Orientation="Vertical" > 
                    <ListView
                             DataContext= "{Binding The Problem is here}"
                              ItemsSource="{Binding}">
                        <ListView.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding}"/>
                            </DataTemplate>
                        </ListView.ItemTemplate>

                    </ListView>
                </StackPanel>
            </Border>
        </Flyout>

    </ResourceDictionary>
</Page.Resources>

<Grid x:Name="LayoutRoot">
    <Hub x:Name="Hub" x:Uid="Hub" >

        <HubSection x:Uid="Location_View" Header="Locations"
                    DataContext="{Binding Locations}" HeaderTemplate="{ThemeResource HubSectionHeaderTemplate}">
            <HubSection.Resources>


                <DataTemplate x:Key="Location_Item_Template">

                    <ListView 
                        AutomationProperties.AutomationId="ItemListViewSection5"
                        AutomationProperties.Name="Items In Group"
                        SelectionMode="None"
                        IsItemClickEnabled="True"
                        ItemsSource="{Binding}"
                        ItemTemplate="{StaticResource LocationItem_Template}"
                        ItemClick="ItemView_ItemClick"
                        ContinuumNavigationTransitionInfo.ExitElementContainer="True"/>


                </DataTemplate>
            </HubSection.Resources>

            <StaticResource ResourceKey="Location_Item_Template"/>

        </HubSection>

    </Hub>
</Grid>

Я попытался установить datacontext с помощью путей и т.д., Ничего не работает, и наследование не будет перезаписано правильно, а DataContext всегда равно нулю.

Любая помощь будет принята с благодарностью.

  • 0
    В чем конкретно проблема у вас? Что вы пробовали? Вы пытались установить контекст данных в коде позади?
  • 0
    Это работает, если я установлю его в фоновом режиме, но это было не то, что я искал. Я решил, добавив сопоставление с источником в статических ресурсах. Выложу это чуть позже.
Показать ещё 1 комментарий
Теги:
xaml
data-binding
windows-phone-8.1
windows-phone-8

2 ответа

0

У меня была аналогичная проблема, когда я хотел переопределить унаследованный DataContext и использовать стандартный DataContext по умолчанию, который я установил для всей страницы. Я решил это, установив свойство x: Name в элементе страницы <Page... x:Name="MyPage"> а затем <Page... x:Name="MyPage"> его к контексту данных, используя свойство name элемента для объекта Binding, например: Source="{Binding ElementName=MyPage, Path=DataContext.DesiredProperty}". Надеюсь, это поможет кому-то.

0

Итак, я решил это, добавив CollectionViewSource в Page.Resources, который указал на правильное свойство корневого ViewModel и с правильным DataContext.

<CollectionViewSource x:Key="SuggestionsModel" Source="{Binding Suggestions}"></CollectionViewSource>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню