zoukankan      html  css  js  c++  java
  • Silverlight中使用MVVM:DataGrid中触发Button的Click事件

    方法1、使用RelativeSource向上查找DataContext中的命令,但是需要注意的是命令绑定需要写全 类似: DataContext.ReLoadCommand
    <Button Grid.Column="1" Command="{Binding DataContext.ReLoadCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=UserControl}}"Content="刷新" />

    红色字是关键。

    方法2、在Prism的官方文档中给了一个不错的解决办法,
    {Binding DataContext.XXXCommand, ElementName=DataGrid1},
    DataGrid1就是外面的DataGrid。

    如果外部父控件是DataGrid时,有时无法用上面的方法实现,可以采用下面的方法:

    <sdk:DataGridTemplateColumn Header="单号" Width="100">
    <sdk:DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
    <HyperlinkButton x:Name="myHyperlinkButton" Content="{Binding XXXX, Mode=TwoWay}" Foreground="Blue" VerticalAlignment="Center"
    Command="{Binding DataContext.MyCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=UserControl}}"
    CommandParameter="{Binding ElementName=myHyperlinkButton}"/>
    </DataTemplate>
    </sdk:DataGridTemplateColumn.CellTemplate>
    </sdk:DataGridTemplateColumn>

    ViewModel写法

    public ICommand MyCommand{

    get{

    return new RelayCommand<object>((param) =>
    {
    var ctrl = param as HyperlinkButton;
    ctrl.DataContext as Model//(转为实体类)

    其他操作......
    });

    }

    }

  • 相关阅读:
    C#线程的IsBackgroud属性动态设置
    asp.net 异步
    IBM一些Java文章
    (一)Apollo配置中心介绍
    样式表中的 element.style样式如何修改
    jquery中的append和js原生中的innerhtml的区别
    如何在datagrid中的column获取json数据
    快速排序
    冒泡排序
    二进制中有多少个1?
  • 原文地址:https://www.cnblogs.com/Kingly/p/3278079.html
Copyright © 2011-2022 走看看