kzen.dev
  • Вопросы
  • Метки
  • Пользователи
Оповещения
Вознаграждения
Регистрация
После регистрации, сможете получать уведомления об ответах и комментариях на Ваши вопросы.
Вход
Если у Вас уже есть аккаунт, войдите чтобы проверить новые уведомления.
Тут будут вознаграждения за добавленные вопросы, ответы и комментарий.
Дополнительно
Источник
Редактировать
 user1389843
user1389843
Вопрос

Выход индекса за пределы диапазона при привязке списка к сетке данных в WPF

У меня есть WPF приложение, использующее datagrid. Datagrid привязан к BindingList элементов пользовательского типа. Но когда я добавляю новый элемент в список, я получаю следующий wxception:

Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

XAML:

<Window x:Class="DoctorApp3.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded"
        Closed="Window_Closed">
    <DataGrid AutoGenerateColumns="True" 
            Height="184" HorizontalAlignment="Left" Margin="12,12,0,0" 
            Name="dataGrid1" VerticalAlignment="Top" Width="479" 
            ItemsSource="{Binding}" />

код окна:

public BindingList<Patient> tableData;
public List<CompositeType> ntfList;
Listener listener;

public MainWindow()
{
    InitializeComponent();
    tableData = new BindingList<Patient>()
    {                
    };

    //Bind the DataGrid to the customer data
    dataGrid1.DataContext= tableData;

    dataGrid1.AutoGeneratedColumns += (a, b) =>
    {       
        try
        {
            dataGrid1.Columns.RemoveAt(0); //the place where exception appears
        }
        catch (Exception ex)
        {
        }
        dataGrid1.Columns.RemoveAt(1);
        dataGrid1.Columns.RemoveAt(2);
    };
    ntfList = new List<CompositeType>();
    dataGrid1.MouseDoubleClick += (a, b) => OpenPatientWindow();
    button1.Click += (a, b) => OpenPatientWindow();            
}

Место, куда добавляются новые данные:

public void OnMessageAdded(CompositeType message)
{
    if (((message as CompositeType).formTitle.Equals("Informing Doctor")) || ((message as CompositeType).formTitle.Equals("Informing about end therapy")))
    {
        Patient p = (message as CompositeType).patient;
        // (mainWindow as MainWindow).dataGrid1.
        (mainWindow as MainWindow).tableData.Add(p);
        (mainWindow as MainWindow).ntfList.Add(message as CompositeType);
        (mainWindow as MainWindow).dataGrid1.Items.Refresh();
    }
}

Я получаю новые данные для списка из службы WCF через функцию обратного вызова OnMessageAdded, но данные, которые я получаю из службы, полностью в порядке.

И пользовательский класс, который я использую:

[Serializable]
public class Patient
{
    [DataMember]
    public String PatientId;   
    [DataMember]
    public String Surname;    
    [DataMember]
    public String Name;        
    [DataMember]
    public String Patronymic;       
    [DataMember]
    public String Adress;            
    [DataMember]
    public String Phone;            
    [DataMember]
    public String Birthday;     
    [DataMember]
    public String Diagnosis;  
    [DataMember]
    public String State;          
    [DataMember]
    public String TherapyStart;           
    [DataMember]
    public String TherapyEnd;
}

Есть идеи, почему это не работает?

EDIT: Я в аналогичном проекте объект Patient просматриваю следующим образом:

Когда в моем проекте это выглядит следующим образом:

Я думаю, что это проблема, но понятия не имею, что это значит.

0 2012-05-12T13:36:00+00:00 0
 LPL
LPL
Редактировал вопрос 12-го мая 2012 в 5:16
Программирование
wpf
c#
datagrid
binding
Похожие сообщества 6
Microsoft Stack Jobs
Microsoft Stack Jobs
2 414 пользователей
Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks
Открыть telegram
С#
С#
2 330 пользователей
Стараемся не флудить. Пишем по делу. Правила: https://t.me/professorweb/430450 Для флуда @svoboda_obsh
Открыть telegram
CODE BLOG / C#
CODE BLOG / C#
1 772 пользователей
Чат для .NET разработчиков и C# программистов. По всем вопросам: @shwanoff Youtube-канал: https://youtube.com/codeblog Основной канал: @codeblog Вконтакте: https://vk.com/codeblog Правила: https://t.me/codeblog_csharp/246972 Вакансии по тегу #work
Открыть telegram
var chat = new Chat();
var chat = new Chat();
1 428 пользователей
Обсуждение вопросов по .NET Правила чата – https://blog.devdigest.today/chat-rules Чат для флуда – https://t.me/+zwxI91RGG6s2YzAy
Открыть telegram
C#/.NET Для Новичков
C#/.NET Для Новичков
289 пользователей
Группа создана для тех, кто изучает язык программирования C#. Верховный главнокомандующий: @BlackDeveloper Оффтоп - разрешен в меру, реклама - бан.
Открыть telegram
ext
ext
31 пользователей
Общение на темы YouTube канала и программирования. Вакансии не размещаем. Основной канал: @extremecode
Открыть telegram
Добавить вопрос
Категории
Все
Технологий
Культура / Отдых
Жизнь / Искусство
Наука
Профессии
Бизнес
Пользователи
Все
Новые
Популярные
1
Ilya Smirnov
Зарегистрирован 5 дней назад
2
Денис Васьков
Зарегистрирован 1 неделю назад
3
Dima Patrushev
Зарегистрирован 1 неделю назад
4
sirojidddin otaboyev
Зарегистрирован 2 недели назад
5
Елена Гайдамамакинат
Зарегистрирован 2 недели назад
RU
© kzen.dev 2023
Источник
stackoverflow.com
под лицензией cc by-sa 3.0 с атрибуцией