找回密码
 立即注册

QQ登录

只需一步,快速开始

q406157290

高级会员

124

主题

531

帖子

1359

积分

高级会员

积分
1359

活字格认证

q406157290
高级会员   /  发表于:2015-9-20 21:04  /   查看:12052  /  回复:17

Detail button点击可以弹出Messge, 可是当新规追加一行后 再点击Detail 就不会弹出message,如果继续添加新行,再点击新行的Detail button是可以弹出messge的
如何处理这个问题求解 着急谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

17 个回复

正序浏览
Alice
社区贡献组   /  发表于:2015-10-10 19:15:00
18#
回复 17楼q406157290的帖子

很抱歉回复晚了。
以上的方案,你可以根据实际项目的需求进行选择,并且更改,不可能是完美的。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
q406157290
高级会员   /  发表于:2015-10-10 10:31:00
17#
回复 16楼gw0506的帖子

您的解决方法挺好, 可是每次新追加一行 (比如开始有5条数据)Loaded就会走6次 会遍历之前的button的Loded事件
FlexGrid把所有的都重新描画了一遍
回复 使用道具 举报
gw0506
超级版主   /  发表于:2015-9-24 17:04:00
16#
试试这个~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1满意度 +5 收起 理由
KNight + 5 斑竹厉害啊 :-)

查看全部评分

回复 使用道具 举报
q406157290
高级会员   /  发表于:2015-9-24 14:43:00
15#
回复 14楼KNight的帖子

我暂时的解决方法就是在CellFacory中写的button的绑定
回复 使用道具 举报
KNight
中级会员   /  发表于:2015-9-24 14:24:00
14#
回复 13楼q406157290的帖子

:~ 那就是业务逻辑如何处理的事情,只能靠你自己了 加油,相信你可以的
回复 使用道具 举报
q406157290
高级会员   /  发表于:2015-9-24 13:39:00
13#
回复 12楼KNight的帖子

这个方法能解决问题,但是结合到我的实际逻辑,我还不能这么写,在Detail  button中有很多处理要用到ViewModel中的东西所以....
回复 使用道具 举报
KNight
中级会员   /  发表于:2015-9-24 13:33:00
12#
回复 11楼q406157290的帖子

把绑定的Button代码放入Person类里:
  1. public class Person : NotifyPropertyChanged
  2. {
  3.     ...

  4.         private RelayCommand detailCommand;
  5.         public RelayCommand DetailCommand
  6.         {
  7.                 get
  8.                 {
  9.                         if (detailCommand == null)
  10.                         {
  11.                                 detailCommand = new RelayCommand(DetailClick);
  12.                         }

  13.                         return detailCommand;
  14.                 }
  15.                 set
  16.                 {
  17.                 }
  18.         }

  19.         private void DetailClick(object obj)
  20.         {
  21.                 MessageBox.Show("aaa");
  22.         }
  23. }
复制代码

并将Button的绑定方式改为:
  1. <Button Content="Detail" Command="{Binding DetailCommand}" />
复制代码


这样就解决了你新增一行时按钮点击无法触发事件的问题。
我猜测之前出现问题的原因是,你把所有按钮的点击命令都绑定到FlexGridViewModel的DetailCommand对象上,你每次新增一行时,detailCommand就会New一个命令对象交给新行,所以一般情况下新增的那行可以触发点击命令,但是你前面那行绑定的那个命令对象就不知道去哪里了,有可能被垃圾回收了吧(guess)。

不知道这样的绑定方式会不会影响您的需求?
回复 使用道具 举报
q406157290
高级会员   /  发表于:2015-9-24 09:14:00
11#
回复 10楼iceman的帖子

我还有个问题  当点击Detail  button 的时候 在detail button的Click处理中 如何能知道detail   button所在行的Item
强调下是在detail button的Click处理中获得button所在行的Item  ,不是通过绑定把Item传递过去
(请不要用flexGrid.SelecteItem这种方法,除了这个还有别的吗)
有没有类似DataGrid这样的方法
DataGridCellPresenter dgcp = (DataGridCellPresenter)((StackPanel)btn.Parent).Parent;if (dgcp.Row == null)
            {
                index = CDataGrid.CurrentRow.Index;
            }
            else
            {
                index = dgcp.Row.Index;
            }
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2015-9-23 17:40:00
10#
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部