2013-01-25 38 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

相關問題