WPF ItemSource возвращает ноль - PullRequest
0 голосов
/ 11 июля 2011

У меня есть названный класс

public class testClass
{
    public testClass(string showCode, string urn)
    {
        ShowCode = showCode;
        URN = urn;
    }

    public string ShowCode { get; set; }
    public string URN { get; set; }
}

Я создаю ArrayList, добавляю в список и привязываю его к сетке данных wpf

ArrayList l = new ArrayList();
l.Add(new testClass("ose11", "7016463"));
this.grdTestData.ItemsSource = l;

В таблице данных отображается только то, что я хочу.

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

IEnumerable<testClass> t = this.grdTestData.ItemsSource as IEnumerable<testClass>;

.. но ' t ' равно нулю! !! это проблема !!

Это определение сетки данных:

<DataGrid AutoGenerateColumns="False" HorizontalAlignment="Left" Margin="12,66,0,48" Name="grdTestData" Width="200" CanUserAddRows="True" >
    <DataGrid.Columns>
        <DataGridTextColumn Header="ShowCode" Binding="{Binding ShowCode}" />
        <DataGridTextColumn Header="URN"  Binding="{Binding Path=URN}" />
    </DataGrid.Columns>
</DataGrid>

1 Ответ

1 голос
/ 11 июля 2011

ItemsSource не равен NULL, просто ArrayList не реализует IEnumerable<testClass>, и поэтому выполняемое вами приведение возвращает null. Если вы используете

var list = (IEnumerable<testClass>) datagrid.ItemsSource;

вы получите сообщение о том, что это приведение неверно.

Если вы используете List<testClass> вместо ArrayList для источника, приведение будет действительным и не вернет ноль.

Если вы не хотите использовать общую коллекцию, вместо этого приведите ее к ArrayList или IEnumerable (non-generic), если вы хотите иметь интерфейс.

...