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

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

    }

    }

  • 相关阅读:
    CSP-J2019游记&解题报告
    旋转立方体实现
    博客背景线条实现
    垃圾基数排序
    链表实现队列(指针)
    公共子序列(luogu P1439)
    可并堆(左偏树)
    搜索(靶形数独)
    线段树(压位)luogu P1558色板游戏
    线段树区间取反
  • 原文地址:https://www.cnblogs.com/Kingly/p/3278079.html
Copyright © 2011-2022 走看看