Grid / ListView中的DelegateCommand

时间:2013-10-04 21:24:31

标签: c# .net listview data-binding windows-store-apps

为什么DelegateCommand无法在Listview中使用?

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

但是当我将我的按钮放在listview之外时它会起作用。我做错了什么?

也许ListView.ItemCommand Event中有Windows-Store Apps

1 个答案:

答案 0 :(得分:0)

这是因为当您在ItemTemplate中绑定时,您的datacontext是当前项而不是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>