Используя привязку для управления порядком столбцов в DataGrid

Проблема

У меня есть Инструментарий WPF DataGrid, и я хотел бы смочь переключиться среди нескольких предварительно установленных порядков столбцов. Это - проект MVVM, таким образом, порядки столбцов хранятся в a ViewModel. Проблема, я не могу заставить привязку работать на DisplayIndex свойство. Независимо от того, что я пробую, включая сладкий метод в этом учебном руководстве Josh Smith, я добираюсь:

DisplayIndex для DataGridColumn с Заголовком 'идентификатор' вне диапазона. DisplayIndex должен быть больше, чем или равным 0 и меньше, чем Столбцы. Количество. Название параметра: displayIndex. Фактическое значение было-1.

Есть ли какое-либо обходное решение для этого?

Я включаю свой тестовый код ниже. Сообщите мне, видите ли Вы какие-либо проблемы с ним.


Код ViewModel

public class MainViewModel
{
    public List Plans { get; set; }
    public int IdDisplayIndex { get; set; }
    public int NameDisplayIndex { get; set; }
    public int DescriptionDisplayIndex { get; set; }

    public MainViewModel()
    {
        Initialize();
    }

    private void Initialize()
    {
        IdDisplayIndex = 1;
        NameDisplayIndex = 2;
        DescriptionDisplayIndex = 0;
        Plans = new List
        {
            new Plan { Id = 1, Name = "Primary", Description = "Likely to work." },
            new Plan { Id = 2, Name = "Plan B", Description = "Backup plan." },
            new Plan { Id = 3, Name = "Plan C", Description = "Last resort." }
        };
    }
}

Запланируйте класс

public class Plan
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

Код окна - это использует DataContextSpy Josh Smith


    
        
            
                
            
            
                
                
                
            
        
    


Примечание: Если я просто использую простые числа для DisplayIndex, все хорошо работает, таким образом, проблема определенно с привязкой.


Обновление 01.05.2010

Я просто делал немного обслуживания на своем проекте, и я заметил, что, когда я выполнил его, проблема, я обсуждаю в этом сообщении, возвратился. Я знал, что это работало в прошлый раз, когда я выполнил его, таким образом, я в конечном счете сузил проблему к тому, что я установил более новую версию Инструментария WPF (февраль '10). Когда я вернулся до июня '09 версий, все хорошо работало снова. Так, я теперь делаю что-то, что я должен был сделать во-первых: я включаю WPFToolkit.dll, который работает в моей папке решения и проверке ее в управление версиями. Неудачно, тем не менее, что более новый инструментарий имеет повреждающееся изменение.

12
задан devuxer 1 May 2010 в 20:27
поделиться

1 ответ

(мой предыдущий ответ был выпущен путь - поэтому я удалил его - я постараюсь снова ответить после воспроизведения ошибки на моей машине)

Проблема, которую вы столкнулись с фактом Что, когда привязки оцениваются в первый раз, свойство NataContext все еще устанавливается на NULL . Это, по какой-то странной причине, но мне неизвестно, вызывает привязку для оценки в -1 . Однако, если вы обязательно установите DataContext до , привязки оцениваются, вы будете в порядке. К сожалению, это может быть возможно только в коде - следовательно, во время выполнения, а не в разработке. Так что в разработке времени я до сих пор не знаю, как обойти ошибку.

Для этого установить NataContext свойство окна до вызова на INATIVENIZECOMPOMPONENT Таким образом:

public MainWindow()
{
    DataContext = new MainViewModel();
    InitializeComponent();
}

Надеюсь, это поможет.

4
ответ дан 2 December 2019 в 19:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: