【问题标题】:DelegateCommand in Grid/ListView网格/列表视图中的委托命令
【发布时间】:2013-10-12 00:45:02
【问题描述】:
为什么DelegateCommand 在我的Listview 中不起作用?
<ListView>
<ListView.ItemTemplate>
<DataTemplate>
<Button Command="{Binding OpenCommand}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
但是当我将按钮放在列表视图之外时它会起作用。我做错了什么?
也许Windows-Store Apps 中有ListView.ItemCommand Event?
【问题讨论】:
标签:
c#
.net
listview
data-binding
windows-store-apps
【解决方案1】:
这是因为当您在ItemTemplate 中绑定时,您的数据上下文是当前项,而不是 ListView 的数据上下文。如果你想使用 ListView 的 datacontext,你可以这样做:
<Button Command="{Binding DataContext.OpenCommand, RelativeSource={RelativeSource AncestorType=ListView}}" />
由于 AncestorType 不适用于 Windows 应用商店应用,因此使用 ElementName 应该可以工作:
<ListView Name="myListView">
<ListView.ItemTemplate>
<DataTemplate>
<Button Command="{Binding DataContext.OpenCommand, ElementName=myListView}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>