Datacontext到ListView --- Windows Store应用程序

时间:2013-01-30 02:27:30

标签: 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.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>

1 个答案:

答案 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}" />