• WPF + Caliburn.Micro +ActionMessage事件绑定


      ActionMessage事件绑定是个人觉的算是CM的精髓了,比如说我在View里面放个button,我们要在他的click事件里面写东西,怎么写.如果是WPF我们直接在CS里面写就可以.但是CM不行,他给我们提供了这个机制.写法如下:EventName指定是什么事件,MethodName是方法名称,<cal:Parameter Value="{Binding ElementName=list, Path=SelectedItems}" />这个方法的参数我们用的事绑定listview控件的选中项.

    <Window x:Class="Erp.Views.Test.HelloDataView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:cal="http://www.caliburnproject.org"
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" Title="HelloData" Height="350" Width="1000"
    xmlns:page="clr-namespace:Erp.Views.UserControls"
    WindowStartupLocation="CenterScreen">
    <Grid>
    <StackPanel Background="LightBlue">
    <ListView x:Name="list" Height="130" Margin="5"
    cal:Message.Attach="[Event MouseDoubleClick]=[Action Update($this.SelectedItem)]"
    >
    <ListView.View>
    <GridView>
    <GridViewColumn x:Name="gvc">
    <GridViewColumn.Header>
    <CheckBox cal:Action.Target="{Binding ElementName=list}" cal:Message.Attach="[Event Checked]=[Action SelectAll];
    [Event Unchecked]=[Action UnselectAll]">全选</CheckBox>
    </GridViewColumn.Header>
    <GridViewColumn.CellTemplate>
    <DataTemplate>
    <CheckBox x:Name="ck" Tag="{Binding Path=ID}"
    IsChecked="{Binding IsSelected,RelativeSource={RelativeSource AncestorType=ListViewItem}}"></CheckBox>
    </DataTemplate>
    </GridViewColumn.CellTemplate>
    </GridViewColumn>
    <GridViewColumn Header="姓名" Width="60" DisplayMemberBinding="{Binding Path=Name}"/>
    <GridViewColumn Header="年龄" Width="60" DisplayMemberBinding="{Binding Path=Age}"/>
    <GridViewColumn Header="性别" Width="60" DisplayMemberBinding="{Binding Path=Sex}"/>
    <GridViewColumn Header="入职日期" Width="80" DisplayMemberBinding="{Binding Path=Time}"/>
    <GridViewColumn Header="国籍" Width="60" DisplayMemberBinding="{Binding Path=Controy}"/>
    </GridView>
    </ListView.View>
    </ListView>

    <Button Content="删除" Width="100" >
    <i:Interaction.Triggers>
    <i:EventTrigger EventName="Click">
    <cal:ActionMessage MethodName="Delete">
    <cal:Parameter Value="{Binding ElementName=list, Path=SelectedItems}" />
    </cal:ActionMessage>
    </i:EventTrigger>
    </i:Interaction.Triggers>
    </Button>
    </StackPanel>
    </Grid>
    </Window>

    CM为ActionMessage提供了更为强大的Attach功能,可以写成这样

    <Button cal:Message.Attach="[Event Click]=[Action Delete(list.SelectedItems)]" Content="删除" Width="100"/>
    如果我们还需要其他事件,直接叠加就可以

    <Button cal:Message.Attach="[Event Click]=[Action Delete(list.SelectedItems)]"

                 cal:Message.Attach="[Event 事件名称]=[Action 调用的方法(参数)]"

    Content="删除" Width="100"/>

  • 相关阅读:
    js产生随机数函数,js如何生成随机数
    Oracle11g-linux安装
    ORACLE的监听日志太大,客户端无法连接 BUG:9879101
    liunx下oracle链接数超出最大链接数处理方法
    mui中的a标签注意事项
    mui中点击按钮弹出层可供选择数据自动填充
    js中处理对象JSON.stringify()
    eval()函数
    linux常用命令(1)
    centos下载地址
  • 原文地址:https://www.cnblogs.com/lijin/p/3251313.html
Copyright © 2020-2023  润新知