Caliburn.Micro 傑的入門教程2 ,瞭解Data Binding 和 Events(翻譯)

Caliburn.Micro 傑的入門教程1(翻譯)
Caliburn.Micro 傑的入門教程2 ,瞭解Data Binding 和 Events(翻譯)
Caliburn.Micro 傑的入門教程3,事件和參數
Caliburn.Micro 傑的入門教程4,事件聚合器
Caliburn.Micro 傑的入門教程5,窗口管理器
Caliburn.Micro 傑的入門教程6, Screens 和 Conductors 簡介


 Caliburn Micro Part 2: Data Binding and Events

原文地址:
http://www.mindscapehq.com/blog/index.php/2012/1/16/caliburn-micro-part-2-data-binding-and-events/

php

接下來的這篇文章咱們將看看Caliburn Micro協助咱們綁定數據和事件。 咱們將要構建的應用程序概述了在前面的博客添加的一些簡單的用戶交互和數據顯示。html

1. Data binding測試

咱們先將應用程序顯示的數據存儲在Model中。 AppViewModel類的建立相似於上一篇博文。添加一個名爲Count的屬性。 咱們給一個默認值爲50。 你可能還記得上次咱們AppViewModel類繼承了Caliburn Micro提供的PropertyChangedBase粗加工的屬性更改通知。 而不是實現INotifyPropertyChanged接口,您能夠在屬性的setter中簡單地調用NotifyOfPropertyChange方法:spa

public class AppViewModel : PropertyChangedBase
{
  private int _count = 50;
 
  public int Count
  {
    get { return _count; }
    set
    {
      _count = value;
      NotifyOfPropertyChange(() => Count);
    }
  }
}

接下來,咱們修改視圖來顯示這個屬性值。 在AppView.xaml中,添加一個TextBlock,以下:翻譯

<Grid MinWidth="300" MinHeight="300" Background="LightBlue">
  <TextBlock Name="Count" Margin="20" FontSize="150" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Grid>

如今運行應用程序,看到TextBlock顯示計數屬性的默認值。code

等一下…好神奇啊! 我不記得有設置過任何綁定TextBlock控件和Count屬性,然而TextBlock卻顯示了正確的數據!
注意,我設置了TextBlock控件的name特性和咱們想綁定的Count屬性同樣的名字。 這是Caliburn.Micro提供的一個方便的捷徑。 TextBlock等元素,顯示數據或文本框,設置他們的名字匹配屬性的數據模型將爲您自動關聯起來。
htm

2. Handling eventsblog

接下來,讓咱們添加一個按鈕用來增長顯示的數值。 快速又無聊的方式是把一個按鈕的單擊事件處理器的名稱進行關聯。 然而,當使用MVVM模式一般最好(但不是絕對必要的)避免使用這種代碼後置的方法。 那麼讓咱們來看看Caliburn Micro的處理事件特有的風格。
首先,在AppViewModel中添加一個遞增計數的方法,以下:繼承

public void IncrementCount()
{
   Count++;
}

以後,在AppView.xaml中添加一個按鈕,以下:教程

<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>

如今運行應用程序並單擊按鈕,嘗試一下數字的增長效果。 這一次你會注意到,咱們不須要作不少工做來綁定按鈕的單擊事件和IncrementCount方法。 對某些用戶界面控件,如按鈕,您能夠簡單地設置的name特性,來控制你想要綁定的方法的名稱。 Caliburn Micro將自動綁定適當的用戶控件的事件模型中指定的方法。這一個按鈕示例中,Caliburn Micro會自動關聯Click事件。 (你也能夠手動指定哪一個事件鏈接到哪一個方法,下次咱們將看)。

3. Event guards

當Caliburn Micro自動關聯了Click事件和IncrementCount方法。便會自動尋找一個叫CanIncrementCount方法或屬性。 經過添加CanIncrementCount方法或屬性,您能夠包括額外的邏輯,肯定基於當前狀態是否容許事件處理模型。
咱們在AppViewModel中,添加如下屬性:

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

由於這個邏輯是基於Count屬性的值,咱們還須要在CanIncrementCount計數值變化時,添加自動屬性更改通知。
可在Count屬性的setter中,添加這行代碼:

NotifyOfPropertyChange(() => CanIncrementCount);

如今的Count屬性,就變成這樣:

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

再次運行應用程序,將增量值增長到100。 每次Count增量增長,都會經過CanIncrementCount判斷可用性,一旦限制已經達到,按鈕將變成不可用,防止用戶進一步增長數值。

在本教程中咱們看了幾個方法,瞭解Caliburn Micro的一些工做。 如今你能夠更快地使用數據綁定,屬性更改通知、事件處理程序和事件監視,同時實現一個堅固的更容易測試和維護的MVVM應用程序。

相關文章
相關標籤/搜索