C# WPF MVVM开发框架Caliburn.Micro常用功能指南②

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# WPF MVVM开发框架Caliburn.Micro常用功能指南②相关的知识,希望对你有一定的参考价值。

这是Caliburn.Micro项目中最常用的约定和功能的快速指南。

01

事件连接

这会自动将控件上的事件关联到ViewModel上的方法。

常规约定:

<Button x:Name="Save">

这将导致按钮的单击事件调用ViewModel上的“Save”方法。

简短语法:

<Button cal:Message.Attach="Save">

这将再次导致按钮的“Click”事件调用ViewModel上的“Save”方法。

可以像这样使用不同的事件:

<Button cal:Message.Attach="[Event MouseEnter] = [Action Save]">

可以向方法传递不同的参数,如下所示:

<Button cal:Message.Attach="[Event MouseEnter] = [Action Save($this)]">

$eventArgs

将EventArgs或输入参数传递给操作。注意:对于保护方法,这将是null,因为触发器实际上没有发生。

$dataContext

传递ActionMessage附加到的元素的DataContext。这在主/详细场景中非常有用,在主/详细场景中,ActionMessage可能会冒泡到父VM,但需要携带要执行操作的子实例。

$source

触发要发送的ActionMessage的实际框架元素。

$view

绑定到ViewModel的视图(通常是用户控件或窗口)。

$executionContext

操作的执行上下文,其中包含上述所有信息及更多信息。这在高级场景中很有用。

$this

操作附加到的实际UI元素。在这种情况下,元素本身不会作为参数传递,而是作为其默认属性传递。

长语法

<UserControl x:Class="Caliburn.Micro.CheatSheet.ShellView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 
    xmlns:cal="http://www.caliburnproject.org"> 
    <StackPanel> 
        <TextBox x:Name="Name" />
        <Button Content="Save"> 
            <i:Interaction.Triggers> 
                <i:EventTrigger EventName="Click"> 
                    <cal:ActionMessage MethodName="Save"> 
                       <cal:Parameter Value="Binding ElementName=Name, Path=Text" /> 
                    </cal:ActionMessage> 
                </i:EventTrigger> 
            </i:Interaction.Triggers> 
        </Button> 
    </StackPanel> 
</UserControl>

此语法表达式对于Blend 比较友好。

02


数据绑定

这将自动将控件上的依赖项属性绑定到ViewModel上的属性。

常规约定:

<TextBox x:Name="FirstName" />

将导致TextBox的“Text”属性绑定到ViewModel的“FirstName”属性。

明确的写法:

<TextBox Text="Binding Path=FirstName, Mode=TwoWay" />

这是绑定属性的正常方式。

Event Aggregator 事件聚合器

事件聚合器上的三种不同方法是:

public interface IEventAggregator   
    void Subscribe(object instance);  
    void Unsubscribe(object instance);  
    void Publish(object message, Action<System.Action> marshal);  

事件可以是一个简单的类,例如:

public class MyEvent 
    public MyEvent(string myData) 
        this.MyData = myData;
    


    public string MyData  get; private set; 

原文标题:Caliburn.Micro Xaml made easy

原文链接:https://caliburnmicro.com/documentation/cheat-sheet

翻译:dotnet编程大全

技术群 : 添加小编mm1552923,备注:进群!

以上是关于C# WPF MVVM开发框架Caliburn.Micro常用功能指南②的主要内容,如果未能解决你的问题,请参考以下文章

C# WPF MVVM开发框架Caliburn.Micro常用功能指南②

C# WPF MVVM开发框架Caliburn.Micro 名称Transformer⑩①

C# WPF MVVM开发框架Caliburn.Micro 自定义Conventions⑩

C# WPF MVVM开发框架Caliburn.Micro 关于Conventions⑧

C# WPF MVVM模式[经典]案例

C# WPF MVVM开发框架Caliburn.Micro View / View Model 命名⑨