C# Datacontext进入ListView——Windows应用商店

C# Datacontext进入ListView——Windows应用商店,c#,windows-8,windows-store-apps,C#,Windows 8,Windows Store Apps,在我的应用程序中,我在页面中有一个datacontext,但是,我想将这个datacontext移动到ListView,因为我需要创建更多datacontext 我试图指定一个名称来调用DataContext网格,但不起作用 <Page x:Class="Food_UsuarioWin8.Pages.HUB" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.m

在我的应用程序中,我在页面中有一个datacontext,但是,我想将这个datacontext移动到ListView,因为我需要创建更多datacontext

我试图指定一个名称来调用DataContext网格,但不起作用

<Page
x:Class="Food_UsuarioWin8.Pages.HUB"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Food_UsuarioWin8.Pages"
xmlns:vmSegments="using:Food_UsuarioWin8.ViewModels"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">

 </Page.Resources>
<Page.DataContext>
    <vmSegments:ViewModelSegments x:Name="DataContextSegments"/>
</Page.DataContext>

 <ListView x:Name="ListViewSegments" Grid.Row="1" Margin="0" DataContext="{StaticResource DataContextSegments}" ItemContainerStyle="{StaticResource ListViewSItemtyleECFood}" >
  <Viewbox>
  </Viewbox>
 </ListView>

有两种方法可以创建“复合”数据上下文

我的首选是单个
ViewModel
类,该类具有您所需的每个数据上下文的属性:

public class ViewModel
{
    public ViewModel()
    {
        Segments = new ViewModelSegments();
        SomethingElse = new ViewModelSomethingElse();
    }

    public ViewModelSegments Segments { get; set; }
    public ViewModelSomethingElse SomethingElse { get; set; }
}
在XAML中,将页面的主视图模型设置为数据上下文,然后将各个控件绑定到其属性:

<ListView ItemsSource="{Binding Segments}" />

或者,您可以将各个数据上下文类放入资源中,并从中使用它们:

<Page.Resources>
    <vm:ViewModelSegments x:Key="DataContextSegments" />
    <vm:ViewModelSomethingElse x:Key="DataContextSomethingElse" />
</Page.Resources>

<ListView DataContext="{StaticResource DataContextSegments}" ItemsSource="{Binding}" />


确切地说,我为viemodel(类)DataContextSegments命名,然后分配给ListView的DataContext,但不起作用。看看我的xaml。我想不使用c#,只使用xaml。在这行代码中,我不能使用Key,只使用(FieldModifier,Name,Uid)@Makito不能添加
x:Key
是什么意思?您需要为资源提供一个密钥才能访问它,不能按名称引用它。这是对XAML中资源的一个很好的介绍。虽然它是针对WPF的,但WinRT在本例中并没有那么大的不同。不,不,我知道它是“x:Key=“Name”“(我知道xaml),但我不能分配密钥,因为它不识别它,我只看到选项名称、FieldModifier、UidHave为Windows8开发的。。。我在一个页面中,在网格或任何其他定义之前,我放置了,但我不能放置“key”,因为它在这个上下文中不存在