在我的应用程序中我有一个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>
答案 0 :(得分:0)
有两种方法可以创建“复合”数据上下文。
我的偏好是单个ViewModel
类,其中包含您需要的每个数据上下文的属性:
public class ViewModel
{
public ViewModel()
{
Segments = new ViewModelSegments();
SomethingElse = new ViewModelSomethingElse();
}
public ViewModelSegments Segments { get; set; }
public ViewModelSomethingElse SomethingElse { get; set; }
}
在XAML中,您将主ViewModel
设置为页面的DataContext
,然后将各个控件绑定到其属性:
<ListView ItemsSource="{Binding Segments}" />
或者,您可以将单个数据上下文类放入资源并从中使用它们:
<Page.Resources>
<vm:ViewModelSegments x:Key="DataContextSegments" />
<vm:ViewModelSomethingElse x:Key="DataContextSomethingElse" />
</Page.Resources>
<ListView DataContext="{StaticResource DataContextSegments}" ItemsSource="{Binding}" />