【问题标题】:WPF GridView not Binding to CollectionWPF GridView 未绑定到集合
【发布时间】:2011-06-27 17:55:39
【问题描述】:

我一直在研究如何将 GridView 绑定到 ObservableCollection。所有示例都执行相同的步骤,但它不适用于我的应用程序。

我什至在此处复制了示例:http://www.switchonthecode.com/tutorials/wpf-tutorial-using-the-listview-part-1

在 XAML 中声明项目时,DisplayMemberBinding 正在工作,因此问题一定是集合。

对于 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; }
}

【问题讨论】:

    标签: wpf listview gridview collections binding


    【解决方案1】:

    实际上你需要做的就是确保数据上下文设置正确

    DataContext="{Binding RelativeSource={RelativeSource Self}}" 将它放在窗口的标签中。

    【讨论】:

      【解决方案2】:

      您的绑定不会在您的表单上找到该属性。您没有指定在哪里可以找到 GameCollection:绑定不知道在哪里查找。

      x:Name="someName" 添加到Window 的根元素,然后将绑定修改为{Binding GameCollection, ElementName=someName}。这将解决绑定问题。

      【讨论】:

      • 其实还有一个叫GameCollection的属性在下面,所以只有ElementName部分适用
      • 对不起!滚动失败,我猜 :-) 正在编辑!
      • 是的,是名称问题,现在可以正常使用了,谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      相关资源
      最近更新 更多