我的Windows Universal页面上有一个ListView。我使用UserControl来定义我的ItemTemplate,以便我可以使用RelativePanel和VisualStateManager来控制我的项目的显示方式,具体取决于屏幕大小...
<ListView ItemsSource="{Binding Path=AllThings}"
ItemContainerStyle="{StaticResource ListViewItemStyle}">
<ListView.ItemTemplate>
<DataTemplate>
<local:CrossingControl />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我的UserControl中有一个按钮,我想将其Command绑定到ViewModel中的命令属性,该属性是列表本身的DataContext ...
<UserControl ...>
<RelativePanel>
<StackPanel x:Name="crossedEntryPanel">
<Button Command="{Binding DataContext.DeleteCommand,
RelativeSource={RelativeSource Mode=TemplatedParent}}"
CommandParameter="{Binding}"
我尝试过使用ElementName绑定,但它似乎不起作用(我想因为我的listview元素名称是在另一个xaml文件中定义的)。我也尝试了上面的RelativeSource绑定,但这似乎也没有用。我怎样才能正确绑定它?
答案 0 :(得分:2)
您可以使用Tag
属性保存DataContext
的{{1}}并在ListView
中使用
这是怎么做的
UserControl
RelativeSource = {RelativeSource Mode = TemplatedParent}}“: - 这指向<ListView ItemsSource="{Binding Path=AllThings}" x:Name="listview"
ItemContainerStyle="{StaticResource ListViewItemStyle}">
<ListView.ItemTemplate>
<DataTemplate>
<local:CrossingControl Tag="{Binding DataContext,ElementName=listview}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<UserControl x:Name="usercontrol" ...>
<RelativePanel>
<StackPanel x:Name="crossedEntryPanel">
<Button Command="{Binding Tag.DeleteCommand,ElementName=usercontrol}"
CommandParameter="{Binding}"
的{{1}}