2011-02-15 85 views
1

我一直在研究如何將GridView綁定到ObservableCollection。所有示例都執行相同的步驟,但它不適用於我的應用程序。WPF GridView未綁定到集合

我甚至在這裏複製的例子:http://www.switchonthecode.com/tutorials/wpf-tutorial-using-the-listview-part-1

的DisplayMemberBinding工作時,在XAML申報的項目,所以這個問題應該是收集。

對於XAML:

<ListView ItemsSource="{Binding GameCollection}" Margin="0,123,0,41"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Width="140" Header="Game Name" 
     DisplayMemberBinding="{Binding GameName}" /> 
       <GridViewColumn Width="140" Header="Creator" 
     DisplayMemberBinding="{Binding Creator}" /> 
       <GridViewColumn Width="140" Header="Publisher" 
     DisplayMemberBinding="{Binding Publisher}" /> 
      </GridView> 
     </ListView.View> 
    </ListView> 

對於CS

public partial class MainWindow : Window 
{ 
    ObservableCollection<GameData> _GameCollection = 
    new ObservableCollection<GameData>(); 


    public MainWindow() 
    { 
     _GameCollection.Add(new GameData 
     { 
      GameName = "World Of Warcraft", 
      Creator = "Blizzard", 
      Publisher = "Blizzard" 
     }); 
     _GameCollection.Add(new GameData 
     { 
      GameName = "Halo", 
      Creator = "Bungie", 
      Publisher = "Microsoft" 
     }); 
     _GameCollection.Add(new GameData 
     { 
      GameName = "Gears Of War", 
      Creator = "Epic", 
      Publisher = "Microsoft" 
     }); 


     InitializeComponent(); 
     Focus(); 
    } 


    public ObservableCollection<GameData> GameCollection 
    { get { return _GameCollection; } } 
} 

public class GameData 
{ 
    public string GameName { get; set; } 
    public string Creator { get; set; } 
    public string Publisher { get; set; } 
} 

回答

2

您綁定不會找到你的窗體上的屬性。您沒有指定在哪裏查找GameCollection:綁定不知道在哪裏查找。

將一個x:Name="someName"添加到您的窗口的根元素,然後修改綁定爲{Binding GameCollection, ElementName=someName}。這將解決綁定的問題。

+0

實際上,還有一個名爲`GameCollection`的屬性,因此只有ElementName部分適用 – 2011-02-15 16:53:32

1

實際上所有的u需要做的是確保DataContext設置正確

的DataContext =「{綁定的RelativeSource = {自我的RelativeSource}}」提出,在該窗口的標籤。