2013-02-11 5 views
1

Я надеюсь, что это будет действительно очевидно. У меня есть список моделей просмотра внутри наблюдаемой коллекции, которую я подключил к gridview. Представление сложное, с анимацией и т. Д., Я обернул его внутри пользовательского элемента управления.Databind usercontrols DataContext внутри gridview

Моя XAML выглядит следующим образом: -

<GridView Grid.Row="1" ItemsSource="{Binding Tiles, Mode=OneWay}">        
    <GridView.ItemTemplate> 
     <DataTemplate> 
       <local:Tile DataContext="{Binding}" /> 
     </DataTemplate> 
    </GridView.ItemTemplate> 
</GridView> 

но контекст плитки данные всегда пустой.

Есть ли простой способ заставить этот код работать?

Благодаря

ответ

0

Попробуйте удалить DataContext="{Binding}". Элементом DataContext элемента по умолчанию является элемент из коллекции ItemsSource.

+0

все еще не работал. И я не получаю никаких ошибок в окне вывода :( –

+0

Что такое DataContext вашего GridView? –

+0

Нет ни одного явно, поэтому я считаю, что это контекст со страницы? Контекст данных страницы задан на основе свойства навигации на странице «Событие LoadState». Эта виртуальная машина содержит наблюдаемую коллекцию под названием «Плитки, содержащие 8 мозаичных виртуальных машин» –

0

Знаете ли вы, что DataContext всегда равно null? Например, если вы должны были проверить его в конструкторе Tile, его всегда было бы нулевым, потому что процесс привязки не выполняется до тех пор, пока элементы управления не будут созданы.

DataContext="{Binding}" по существу не имеет смысла, как присвоение локальной переменной самому себе в коде. Он ничего полезного не делает, но и ничего не должен навредить. Если вы получаете предметы, появляющиеся в вашем GridView и не возитесь с DataContext в любом месте внутри Tile, то его DataContext будут этими данными этого элемента.

Смежные вопросы