SilverLight DataGrid SelectionChanged事件和DataGrid行中的点击事件互相影响
在一个DataGrid中我添加了 SelectionChanged 事件,让用户在点击DataGrid中的某一行时做一个弹出窗体的操作,同时我还在DataGrid中每行添加了一个按钮,用户点击这个按钮可以做一个删除操作。现在的问题是这两个事件是互相影响的,一直是SelectionChanged 事件在执行,行中的按钮点击事件一直没有执行过,但是当选中的行没有改变时这个按钮的点击事件才会执行。
请问高手们你们在开发的过程中是否遇到了这样的问题,你们是怎么解决这种问题的。 silverlight datagrid --------------------编程问答-------------------- 可以将SelectionChanged事件改成CellDoubleClick事件 --------------------编程问答-------------------- 谢谢你的回复,我没有找到你说的这个事件,就算可以解决冲突我想客户也不想这种解决办法。不是想换行只能是双击了? --------------------编程问答--------------------
var tempDataGrid = sender as DataGrid;
if (tempDataGrid != null)
{
var frameworkElement = tempDataGrid.CurrentColumn.GetCellContent(tempDataGrid.SelectedItem);
if (frameworkElement != null)
{
string controllerName = frameworkElement.Name;
if (controllerName == "ControlName")
{
}
else
{
}
}
}
以上代码写在DataGrid中的SelectionChanged事件里,自己想的很笨的一个方法,贴出来和大家分享一下。
还有一个地方需要注意的是,在DataGrid行中摆放的控件也是需要写事件的。 --------------------编程问答-------------------- 找一下双击事件。这个应该有的。 --------------------编程问答--------------------
datagrid.LoadingRow += new EventHandler<DataGridRowEventArgs>(data_LoadingRow);
void data_LoadingRow(object sender, DataGridRowEventArgs e)
{
e.Row.MouseLeftButtonUp -= new MouseButtonEventHandler(Row_MouseLeftButtonUp);
e.Row.MouseLeftButtonUp += new MouseButtonEventHandler(Row_MouseLeftButtonUp);
}
void Row_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
MessageBox.Show("rrr");
}
在datagrid的LoadingRow事件中添加row的点击事件,而不是使用SelectionChanged事件,这样就算用户的Selection没有改变一样可以触发事件,而且不会和你的button事件冲突。
补充:.NET技术 , 分析与设计