Проблема
У меня есть Инструментарий 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, который работает в моей папке решения и проверке ее в управление версиями. Неудачно, тем не менее, что более новый инструментарий имеет повреждающееся изменение.
(мой предыдущий ответ был выпущен путь - поэтому я удалил его - я постараюсь снова ответить после воспроизведения ошибки на моей машине)
Проблема, которую вы столкнулись с фактом Что, когда привязки оцениваются в первый раз, свойство NataContext
все еще устанавливается на NULL
. Это, по какой-то странной причине, но мне неизвестно, вызывает привязку для оценки в -1
. Однако, если вы обязательно установите DataContext
до , привязки оцениваются, вы будете в порядке. К сожалению, это может быть возможно только в коде - следовательно, во время выполнения, а не в разработке. Так что в разработке времени я до сих пор не знаю, как обойти ошибку.
Для этого установить NataContext
свойство окна до вызова на INATIVENIZECOMPOMPONENT
Таким образом:
public MainWindow()
{
DataContext = new MainViewModel();
InitializeComponent();
}
Надеюсь, это поможет.