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

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

    }

    }

  • 相关阅读:
    粘包现象
    SOCKET的简单介绍
    jQuery基本语法
    Bet(The 2016 ACM-ICPC Asia China-Final Contest 思路题)
    World Cup(The 2016 ACM-ICPC Asia China-Final Contest dfs搜索)
    Number Theory Problem(The 2016 ACM-ICPC Asia China-Final Contest 找规律)
    HDU
    Yin and Yang Stones(思路题)
    在线数学公式编译器
    HDU
  • 原文地址:https://www.cnblogs.com/Kingly/p/3278079.html
Copyright © 2011-2022 走看看