2013-01-25 32 views
0

我想在XAML中做一些简单的数据绑定,但它不适合我,我不知道为什么。如何做数据绑定?

我有这样的GridView

<GridView Name="test2"> 
      <GridView.ItemTemplate> 
       <DataTemplate> 
        <StackPanel> 
         <TextBlock Text="{Binding Header}" FontWeight="Bold" Style="{StaticResource ItemTextStyle}"/> 
         <TextBlock Text="{Binding Item}" FontWeight="Bold" Style="{StaticResource ItemTextStyle}"/> 
        </StackPanel> 
       </DataTemplate> 
      </GridView.ItemTemplate> 
      <GridView.ItemsPanel> 
       <ItemsPanelTemplate> 
        <StackPanel Orientation="Horizontal"/> 
       </ItemsPanelTemplate> 
      </GridView.ItemsPanel> 
     </GridView> 

我想现在绑定。我试图做到这一点在XMAL(崩溃),并通过C#代码(无反应)

在后面的构造函数的代码我试图做到这一点

public MyPage() 
     { 
      this.InitializeComponent(); 

      Test t = new Test 
      { 
       Header = "Header 1", 
       Item = "Item 1", 

      }; 

      List<Test> ts = new List<Test>(); 
      ts.Add(t); 
      test2.DataContext = t; 

     } 

我也试图通过它的一个集合,以及。

正如我所说,我无法得到XMAL的方式来做到这一点。

回答

1

最小得到这个工作就是添加一行:

test2.ItemsSource = ts; 

但你已经有了后来可能会导致您的问题几件事情。

  1. DataContext设置并没有太大的意义在这里,你是说,你要做出项目为你绑定到一个网格元素的上下文。通常情况下,我会说在DataContext将包含您的测试的集合类 - 这将是你的页面的DataContext的,例如,那么你就必须

    < GridView控件名称=“测试2”的ItemsSource =” {绑定测试}“>

    其中Tests是您使用的任何类的属性DataContext。你想让DataContext成为你在代码中设置的唯一东西,然后其他所有东西都从绑定中流出。

  2. 相反的List,你可能想使用ObservableCollection,这样,当添加和从集合中删除项目的数据绑定引擎将自动通知。

+0

嗨,你的第一条线的作品。我有几个问题,但是你说你应该将一个Class作为DataContent,这样你可以对单个网格做更多的绑定?第二个问题是,如果我想要制作该ObservableCollection的项目集合会发生什么情况,以及我的绑定如何更改? – chobo2

+0

是的第一个问题 - 该类成为您的ViewModel,它是您的页面的DataContext,然后您可以在XAML中设置ItemsSource而不是代码。如果您希望界面反映何时添加项目并将其从列表中移除(如测试列表),那么是使用ObservableCollection,它会封装通知列表更改的绑定结束的代码。对于单个项目,如测试本身,您需要实现INotifyPropertyChanged –

+0

当您为页面指定DataContext时。你是说我应该把虚拟机挂到页面而不是网格控件? – chobo2

1

我相信你需要将GridView的ItemsSource绑定到集合。以下步骤

尝试:

  1. MyPage创建一个属性:public List<Test> Tests { get; set; }

  2. 更换test2.DataContext = t;Tests = ts;

  3. 在XAML中,添加一个ItemsSource属性,像这样:

    <GridView Name="test2" ItemsSource="{Binding Tests}"> 
    
+0

没有这似乎没有工作。 – chobo2

相关问题