У меня проблема с привязкой данных, возможно, небольшая. Я попытался реализовать шаблон MVVM в моем приложении. Поэтому у меня есть модель, содержащая мои данные. Эти данные периодически обновляются по сети. На вершине этой модели у меня есть модель представления для привязки. В этой модели представления у меня есть ObservableCollection, которую я хочу связать. У меня проблема в том, что моя модель представления должна быть глобальным ресурсом. Вот почему я использую следующую попытку в моем NavigationWindow:
<NavigationWindow.DataContext>
<localvm:DataViewModel/>
</NavigationWindow.DataContext>
Причина, по которой я должен использовать ее в качестве глобальной переменной, заключается в том, что эта модель представления запускает мою сетевую бизнес-логику. Это, вероятно, плохой путь, но я не мог найти решение этой проблемы. Тем не мение
чтобы отобразить мои данные, у меня в окне навигации есть фрейм, определенный следующим образом:
<Frame Source="/Views/Pages/Page1_SystemOverview.xaml" VerticalAlignment="Stretch></Frame>
на этой загруженной странице у меня есть ItemsControl для просмотра коллекции:
<Page>
<Grid>
<Grid.Resources>
<localcnv:DebugHelperConverter x:Key="debugCNV"/>
</Grid.Resources>
<StackPanel>
<ItemsControl ItemsSource="{Binding Source=ListOfQuerys}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<Button Content="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(ItemsControl.AlternationIndex)}"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</Grid>
Итак, вот моя проблема: когда я запускаю свою программу, ItemsControl содержит 18 элементов без содержимого вообще. Он должен содержать только два элемента, окно вывода не показывает ошибок привязки, но когда я изменяю ItemsSource на
"{Binding Path=ListOfQuerys}"
это говорит:
System.Windows.Data Information: 41 : BindingExpression path error: 'ListOfQuerys' property not found for 'object' because data item is null. This could happen because the data provider has not produced any data yet. BindingExpression:Path=ListOfQuerys; DataItem=null; target element is 'ItemsControl' (Name=''); target property is 'ItemsSource' (type 'IEnumerable')
Что я делаю не так? Я думал, что когда я устанавливаю DataContext в родительском классе, я могу использовать его в дереве, но каким-то образом это не сработает, идеи?
Спасибо!