WPF GridView не привязан к коллекции - PullRequest
1 голос
/ 15 февраля 2011

Я изучал, как связать GridView с ObservableCollection. Все примеры выполняют одинаковые шаги, но в моем приложении это не работает.

Я даже скопировал пример здесь: 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 ]

2 голосов
/ 15 февраля 2011

Ваша привязка не будет находить собственность в вашей форме.Вы не указываете, где найти GameCollection: привязка не знает, где искать.

Добавьте x:Name="someName" к корневому элементу вашего окна, а затем измените привязку на {Binding GameCollection, ElementName=someName}.Это решит проблему с привязкой.

1 голос
/ 15 февраля 2011

на самом деле все, что вам нужно сделать, это убедиться, что текст данных установлен правильно

DataContext = "{Binding RelativeSource = {RelativeSource Self}}" вставить это в тег для окна.

...