【WPF开发备忘】使用MVVM模式开发中列表控件内的按钮事件无法触发解决方法_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 【WPF开发备忘】使用MVVM模式开发中列表控件内的按钮事件无法触发解决方法

【WPF开发备忘】使用MVVM模式开发中列表控件内的按钮事件无法触发解决方法

 2013/7/26 13:18:51  kdalan  博客园  我要评论(1)
  • 摘要:实际使用MVVM进行WPF开发的时候,可能会用到列表控件中每行一个编辑或删除按钮,这时直接去绑定,发现无法响应:<DataGridTemplateColumnHeader="操作"><DataGridTemplateColumn.CellTemplate><DataTemplate><ButtonCommand="{BindingDeleteCommand}"CommandParameter="SysID"></Button><
  • 标签:事件 方法 解决方法 解决 使用 模式 开发 控件

实际使用MVVM进行WPF开发的时候,可能会用到列表控件中每行一个编辑或删除按钮,这时直接去绑定,发现无法响应:

<DataGridTemplateColumn Header="操作">
  <DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
                <Button Command="{Binding DeleteCommand}" CommandParameter="SysID"></Button>
    </DataTemplate>
  </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>    

我也是WPF新手,网上找到一些解决方法http://stackoverflow.com/questions/4396203/how-to-fire-event-from-button-inside-datagrid-in-silverlight-and-mvvm

这种方法需要BUTTON重新绑定一个DataContext,可能造成某些数据丢失。不满足我的功能要求。

最后在一篇文章的评论中找到解决方法如下:

<DataGridTemplateColumn Header="操作">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button Command="{Binding DataContext.DeleteCommand, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=UserControl}}" CommandParameter="{Binding SysID}" Content="删除"></Button>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

主要是通过RelativeSource 进行 DataContext 查找,进而进行绑定。

  • 相关文章
    网友 2014/7/4 17:14:56 发表

    麻烦,能不呢发下。后天获取值的方法

发表评论
用户名: 匿名