Silverlight中使用MVVM(7):DataGrid中触发Button的Click事件
2012-04-06 11:20
483 查看
转自/article/5020518.html
如何处理这种情况呢,我的做法是这样的:
stackOverFlow.如何取舍就由各位自己分析比较吧.
示例下载:DataGridWithButton.rar
<sdk:DataGridTemplateColumnHeader="功能"Width="Auto">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanelOrientation="Horizontal">
<ButtonContent="删除"Margin="10,0"Command="{BindingShowCommand}"Height="24"
HorizontalAlignment="Left"VerticalAlignment="Center">
</Button>
</StackPanel>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>[/code]在CellTemplate中的Button与ViewModel中的Command属性绑定时.你会发现Button无法触发这个事件
如何处理这种情况呢,我的做法是这样的:
[code]publicclassDataContextProxy:TriggerAction<DependencyObject>
{
protectedoverridevoidInvoke(objectparameter)
{
varparent=this.AssociatedObjectasDependencyObject;
varfe=this.AssociatedObjectasFrameworkElement;
while(parent!=null)
{
if(parent.GetType()==typeof(DataGrid))
{
varcontext=parentasDataGrid;
fe.DataContext=context.DataContext;
break;
}
parent=VisualTreeHelper.GetParent(parent)asDependencyObject;
}
}
}[/code]继承一个TriggerAction,具体的原理就不叙述了,Button引用这个TriggerAction,不要忘了System.Windows.Interactivity这个dll噢^^
[code]<ButtonContent="删除"Margin="10,0"Command="{BindingShowCommand}"Height="24"
HorizontalAlignment="Left"VerticalAlignment="Center">
<i:Interaction.Triggers>
<i:EventTrigger>
<local:DataContextProxy/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>[/code]这样就可以了.另外一种方式可以参考:
示例下载:
相关文章推荐
- Silverlight中使用MVVM:DataGrid中触发Button的Click事件
- Silverlight中使用MVVM(7):DataGrid中触发Button的Click事件
- 【Silverlight】以MVVM友好的方式使用DataGrid的SelectedItems属性
- Silverlight中使用MVVM方式进行datagrid的内嵌combobox方法
- Silverlight 后台利用代码触发 Button 的Click事件
- Silverlight中使用DataGrid后,里面的Button的Command不响应的问题
- Silverlight中使用SDK的DataGrid,出现滚动条,每次滚动会触发LoadingRow事件
- WPF使用MVVM完成DataGrid数据绑定带全选
- 一起谈.NET技术,使用 MEF 公开 Silverlight MVVM 应用程序中的接口
- datagrid里面的ImageButton 重复触发delete事件
- Silverlight中使用MVVM(4)—演练
- Silverlight中使用MVVM(3)—进阶
- Silverlight DataGrid使用WCF RIA Service实现Load-on-demand的数据加载
- 使用radion button选择datagrid的行(在datagrid中使用radio buttons)
- 稳扎稳打Silverlight(4) - 2.0控件之DataGrid, DatePicker, Grid, GridSplitter, HyperlinkButton, Image
- Silverlight中使用MVVM(1)
- 如何用JavaScript去触发Button的Click事件
- wp8使用mvvm模式简单例子(二)---登陆功能,事件触发
- silverlight MouseLeftButtonDown事件总是无法触发
- 豆瓣电台WP7客户端 MVVM重构记录之使用AppBarUtils使ApplicationBarIconButton支持绑定(包括IconUri)