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//(转为实体类)

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

    }

    }

  • 相关阅读:
    SQL函数 Convert,dateadd
    WebBrowser.ExecWB的完整说明
    GetShortPathName函数
    winmm.dll包含函数
    C# 操作Excel大全
    C#操作目录和文件
    File操作
    C#中对EXCEL保存的SAVEAS方法说明
    dataTable 、dataView、Dataset 区别
    System.Windows.Forms.Application.DoEvents();
  • 原文地址:https://www.cnblogs.com/Kingly/p/3278079.html
Copyright © 2011-2022 走看看