У меня есть приложение, которое использует MVVM. У меня есть несколько элементов в главном окне, которые связаны с ViewModel для этого окна. Когда я запускаю это все работает. Однако, когда я добавляю пользовательский элемент управления в главное окно и пытаюсь привязать его к одному из его объектов зависимостей, он выдает исключение («Ссылка на объект не установлена для экземпляра объекта»). Окно исключений просто появляется на экране и не ссылается на какое-либо конкретное место в коде. И любая другая информация в исключении не является полезной.
Я старался изо всех сил отследить это, но мне не повезло. В конструкторе окна я проверил и подтвердил, что элемент, к которому он пытается привязаться, существует и является объектом (int []). Я также вручную установил свойство в конструкторе с проблемами.
Вот некоторые фрагменты кода, если кто-нибудь может заметить что-либо.
Здесь я использую пользовательский элемент управления и пытаюсь привязать свойство 'view'
<local:Histogram Grid.Row="2" Grid.ColumnSpan="2"
View="{Binding Path=HistogramData}"
Foreground="{DynamicResource FontColor}"
BucketStroke="{DynamicResource BucketStrokeBrush}"
BucketFill="{DynamicResource BucketFillBrush}"
SelectedBrush="{DynamicResource FamilyEditListViewSelectedBrush}"
DisabledForegroundBrush="{DynamicResource DisabledForegroundBrush}"
AxisBrush="{DynamicResource AxisBrush}"
MaxHeight="130" />
Вот поле в модели представления, к которому я пытаюсь привязаться:
public int[] HistogramData
{
get
{
return histogramData;
}
set
{
if (value != histogramData)
{
histogramData = value;
RaisePropertyChanged("HistogramData");
}
}
}
И в конструкторе модели представления я создаю экземпляр объекта
histogramData = new int[256];
И, наконец, вот свойство view в пользовательском элементе управления
public static readonly DependencyProperty ViewProperty =
DependencyProperty.Register("View",
typeof(int[]),
typeof(Histogram),
new FrameworkPropertyMetadata(null,
FrameworkPropertyMetadataOptions.AffectsRender,
new PropertyChangedCallback(ViewProperty_Changed)));
public int[] View
{
get { return (int[])GetValue(ViewProperty); }
set { SetValue(ViewProperty, value); }
}
Я не знаю, достаточно ли этой информации, чтобы что-то решить, поэтому, если требуется больше кода, пожалуйста, сообщите мне. Я мог бы также сжать проект, если кто-то так склонен смотреть на это. Заранее спасибо.