Caliburn Micro 第二部分 : 数据绑定和事件

http://www.mindscapehq.com/blog/index.php/2012/01/16/caliburn-micro-part-2-data-binding-and-events/


Caliburn Micro 通过 MVVM 设计模式很好的帮助我们获得一个 View 和 Data Model 独立的应用程序。

数据绑定

我们将以一个程序开始本次的教程,主要实现展示在保存在 View Model 中的一个数值。将 AppViewModel 类继承自 PropertyChangedBase ,以此来实现属性更改通知。

public class AppViewModel : PropertyChangedBase
{
    private int _count = 50;

    public int Count
    {
        get { return _count; }
        set
        {
            _count = value;
            NotifyOfPropertyChange(() => Count);
        }
    }
}

这里只需要要将控件的名称和你需要绑定的属性设置为一样,就可以快捷的绑定上。

绑定事件

下一步,我们添加一个按钮来自增需要展示的值。最快捷但是冗余的方法是在后台代码中将按钮的 Click 事件和时间处理程序绑定到一起。但是,在 MVVM 中,你应该尽可能的避免后置代码(不是必须)。所以,接下来我们将使用 Caliburn Micro 的方式来绑定事件。首先,在 AppViewModel 中添加一个自增数值的方法:

public void IncrementCount()
{
    Count++;
}

在 AppView.xaml 的 grid 中添加一个按钮:

<Grid MinWidth="300" MinHeight="300" Background="LightBlue">
    <RepeatButton Name="IncrementCount" Content="Up" Margin="15" VerticalAlignment="Top" />
    <TextBlock Name="Count" FontSize="150" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Grid>

事件预处理

当 Caliburn Micro 自动给属性绑定上了事件之后,它同样也会寻找一个方法或属性叫 CanIncrementCount 。通过添加 CanIncrementCount 方法或属性,你可以添加额外的逻辑来决定事件在当前 Model 的状态下是否可以被处理。

public bool CanIncrementCount
{
    get { return Count < 100; }
}

同样我们也需要在值发生改变的时候去触发事件通知:

NotifyOfPropertyChange(() => CanIncrementCount);

运行程序,当数值增大到它的上限的时候,按钮就会处于禁用状态,防止用户继续增大数值。

知识共享许可协议
《Caliburn Micro Part 2: Data Binding and Events》 常伟华 创作。
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议 | 3.0 中国大陆许可协议进行许可。

站内公告

A PHP Error was encountered

Severity: Core Warning

Message: PHP Startup: zip: Unable to initialize module Module compiled with module API=20060613 PHP compiled with module API=20090626 These options need to match

Filename: Unknown

Line Number: 0

Backtrace: