我在listview中有一个按钮来删除所选项目.当我点击按钮RemoveSubjectCommand没有触发时.如果我把按钮放在列表视图之外它工作正常.这只是因为嵌套项目.我怎么解决这个问题?
<ListView HorizontalAlignment="Stretch" VerticalAlignment="Stretch" HorizontalContentAlignment="Stretch" Grid.ColumnSpan="3" Grid.Row="2" ItemsSource="{Binding AssignedSubjects}"> <ListView.ItemContainerStyle> <Style targettype="ListViewItem"> <Setter Property="HorizontalContentAlignment" Value="Center" /> </Style> </ListView.ItemContainerStyle> <ListView.View> <GridView> <GridViewColumn Width="140" Header="Subjects" displayMemberBinding="{Binding Name}" /> <GridViewColumn Width="auto"> <GridViewColumn.CellTemplate> <DataTemplate> <Button Content="X" Command="{Binding RemoveSubjectCommand}" /> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> </ListView>
查看模型,
private ICommand removeSubjectCommand; ** public ICommand RemoveSubjectCommand { get { return removeSubjectCommand ?? (removeSubjectCommand = new RelayCommand(param => this.RemoveSubject(),null)); } } ** private void RemoveSubject() { *** }
如果我下面的代码,它将正常工作.
<ListView.InputBindings> <KeyBinding Key="Delete" Command="{Binding RemoveSubjectCommand}" /> </ListView.InputBindings>
解决方法
那是因为按钮的DataContext是ListBoxItem DataContext.所以你需要转到父ListView DataContext.
<ListView Name="lv" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" HorizontalContentAlignment="Stretch" Grid.ColumnSpan="3" Grid.Row="2" ItemsSource="{Binding AssignedSubjects}"> <ListView.ItemContainerStyle> <Style targettype="ListViewItem"> <Setter Property="HorizontalContentAlignment" Value="Center" /> </Style> </ListView.ItemContainerStyle> <ListView.View> <GridView> <GridViewColumn Width="140" Header="Subjects" displayMemberBinding="{Binding Name}" /> <GridViewColumn Width="auto"> <GridViewColumn.CellTemplate> <DataTemplate> <Button Content="X" Command="{Binding ElementName=lv,Path=DataContext.RemoveSubjectCommand}" /> </DataTemplate> </GridViewColumn.CellTemplate> </GridViewColumn> </GridView> </ListView.View> </ListView>
原文地址:https://www.jb51.cc/csharp/98831.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。