2013-10-04 5 views
1

Почему DelegateCommand не работает в моем Listview?DelegateCommand in Grid/ListView

<ListView> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <Button Command="{Binding OpenCommand}" /> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

Но это работает, когда я нажимал свою кнопку за пределы своего списка. Что я делаю неправильно?

Возможно, есть ListView.ItemCommand Event в Windows-Store Apps?

ответ

0

Это происходит потому, что, когда вы привязываетесь к ItemTemplate, ваш datacontext - это текущий элемент, а не контекст данных ListView. Если вы хотите использовать DataContext в ListView, вы можете сделать это:

<Button Command="{Binding DataContext.OpenCommand, RelativeSource={RelativeSource AncestorType=ListView}}" /> 

Поскольку AncestorType не доступны для приложений Windows Store, используя ElementName должно работать:

<ListView Name="myListView"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <Button Command="{Binding DataContext.OpenCommand, ElementName=myListView}" /> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
Смежные вопросы