c# – 列表视图mvvm中的WPF删除按钮
发布时间:2020-12-15 18:32:32 所属栏目:百科 来源:网络整理
导读:我在listview中有一个按钮来删除所选项目.当我点击按钮RemoveSubjectCommand没有触发时.如果我把按钮放在列表视图之外它工作正常.这只是因为嵌套项目.我怎么解决这个问题? ListView HorizontalAlignment="Stretch" VerticalAlignment="Stretch" HorizontalC
我在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一个名字,并用元素名绑定 <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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- react native仿微信PopupWindow效果
- 如何使我的应用程序在C#中脚本化?
- c# – Peer-to-Peer分散式网络 – 向所有对等体发送消息
- ruby-on-rails – 为什么我不想在任何地方使用inverse_of?
- layout下新建了XML文件,但R.java中没有生成id(已解决)
- Postgresql中存储过程(函数)调用存储过程(函数)时应用注意的
- OC的block和Swift的闭包写法
- Haskell HXT:使用远程DTD解析xml文档而不使用hxt-curl
- c#-4.0 – 如何告诉我的C#应用??程序关闭它在FileInfo对象或
- ruby-on-rails – 在Devise中使用的last_sign_in_at是什么?