WPF ListView Binding + Ошибка - PullRequest
       2

WPF ListView Binding + Ошибка

1 голос
/ 22 апреля 2011

Я получаю исключение "Ссылка на объект не установлена ​​на экземпляр объекта."в строке "songs.DataContext =".Если я добавлю песни = новый ListView ();до этого мой список пуст, хотя список аудиофайлов не

XAML:

<ListView  Height="Auto" HorizontalAlignment="Center" ItemsSource="{Binding}"
               VerticalAlignment="Center" Name="songList" Width="Auto" MinHeight="300" MinWidth="600">
        <ListView.View>
            <GridView>
                <GridViewColumn Width="Auto" Header="Title" DisplayMemberBinding="{Binding Path=Title}" />
                <GridViewColumn Width="Auto" Header="Artist" DisplayMemberBinding="{Binding Path=Artist}" />
                <GridViewColumn Width="Auto" Header="Album" />
                <GridViewColumn Width="Auto" Header="Length" />
            </GridView>
        </ListView.View>
    </ListView>

C #

 public struct AudioFile
    {

        public String Artist;
        public String Title;
        public String Album;
        public String fileLocation;
        public String Length;
    }

//...
private List<AudioFile> songs = new List<AudioFile>();
//code that adds to array
songList.DataContext = songs;

Ответы [ 4 ]

1 голос
/ 22 апреля 2011

Я подозреваю, что ваш код находится в конструкторе, в месте, где songList еще не создан.

//...
private List<AudioFile> songs = new List<AudioFile>();
//code that adds to array
songList.DataContext = songs;

Попробуйте вместо этого переместить его в событие Loaded .

0 голосов
/ 22 апреля 2011

Вы пишете этот код -

//...
private List<AudioFile> songs = new List<AudioFile>();
//code that adds to array
songList.DataContext = songs;

перед вызовом метода IniitializeComponent () для представления?Можете ли вы предоставить немного больше информации о размещении кода, которое поможет лучше понять ситуацию.

И просто предложение, хотя и не связанное.Я бы сказал, использовать класс вместо структурных объектов, потому что привязка данных WPF учитывает только свойства, а не поля. Определенно, это не является причиной ошибки.

0 голосов
/ 22 апреля 2011

Я думаю, что вы, возможно, пытаетесь установить songList.ItemsSource = list в своем конструкторе, и, очевидно, объект еще не построен.

В ваших классах пользовательского интерфейса лучшее место для инициализации будет только в событии Loaded или после метода InitializeComponent.

Еще лучшим подходом будет использование MVVM.

0 голосов
/ 22 апреля 2011

Ваши songs явно выражены, но как насчет songList?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...