C# Datacontext进入ListView——Windows应用商店
在我的应用程序中,我在页面中有一个datacontext,但是,我想将这个datacontext移动到ListView,因为我需要创建更多datacontext 我试图指定一个名称来调用DataContext网格,但不起作用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
<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”,因为它在这个上下文中不存在