MVVM模式下Telerik.RadGridView控件中RadButton按钮绑定命令无法触发

场景

数据维护页面,数据内容使用Telerik.RadGridView控件,通过点击下方newrow添加数据,误操作需要删除一行信息;
希望点击RadButton后执行对应的操作,但是设置RadButton的 Command="{Binding DeleteCommand}"后触发不了操作

分析

因为RadGridView的ItemsSource绑定了ObservableCollection<Item>,ObservableCollection<Item>是一个Item类的列表,RadGridView里面控件的DataContext就成了Item也就是里面控件的Binding都是Item的属性。而Item里没有DeleteCommand,所以就不能触发操作了

解决

把RadButton的Command绑定为ViewModel里面的DeleteCommand就好了,而RadGridView的DataContext就是ViewModel

<telerik:RadButton Content="删 除">
    <inter:Interaction.Triggers>
        <inter:EventTrigger EventName="Click">
            <cmd:EventToCommand Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=telerik:RadGridView}, Path=DataContext.DeleteCommand}" CommandParameter="{Binding}"></cmd:EventToCommand>
        </inter:EventTrigger>
    </inter:Interaction.Triggers>
</telerik:RadButton>

参考文档

posted @ 2022-10-12 09:38  HKBlog  阅读(37)  评论(0编辑  收藏  举报