我在覆盖从父级继承的datacontext时遇到问题。我有全局DataContext集,之后Hub部分绑定到该模型中的列表,然后传播到Listivew。现在每个listview项都绑定到一个对象,该对象也是该项的DataContext。但是每个listview项都有弹出窗口。现在,弹出窗口继承了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始终为null。
非常感谢任何帮助。
答案 0 :(得分:1)
所以,我通过在Page.Resources中添加一个CollectionViewSource来解决它,它指向了根ViewModel的正确属性和正确的DataContext。
<CollectionViewSource x:Key="SuggestionsModel" Source="{Binding Suggestions}"></CollectionViewSource>
答案 1 :(得分:1)
我有一个类似的问题,我想覆盖继承的DataContext并使用我为整个页面设置的默认DataContext。我通过在Page元素<Page ... x:Name="MyPage">
上设置x:Name属性然后使用Binding对象的element name属性绑定到其数据上下文来解决它:Source="{Binding ElementName=MyPage, Path=DataContext.DesiredProperty}"
。希望这有助于某人。