2011-02-15 83 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}}”提出,在该窗口的标签。