2012-05-21 32 views
5

我是WPF MVVM的新手。任何人都可以在WPF中的MVVM應用程序中清除行爲的用法?爲什麼我們應該去行爲,即使我們在WPF MVVM中有方法操作?在WPF MVVM中使用行爲?

回答

6

行爲是您附加到元素並指定應用程序何時響應的事物。

該行爲附加在行爲上,並定義了行爲觸發時應用程序應該執行的操作。

From this article:

一目瞭然,行爲類似於一個動作:一個自包含 單元的功能。主要區別在於,調用期望爲 的動作,並且在調用時,它們將執行一些操作。 A 行爲不具有調用的概念;相反,它更多地作爲對象的插件: 可選功能,如果需要,可將其附加到對象上。它可能會對環境中的刺激做出響應 ,但不能保證用戶可以控制這種刺激是什麼:它取決於作者的行爲以決定什麼可以定製,哪些不能定製。

And from this article

行爲使您可以封裝在一個可重複使用的單元中的多個相關或相關活動 加狀態。

+1

我不清楚您的詳細資料Erno ..任何其他詳細的帖子或教程是否與樣本..? –

+1

我添加到我的答案。我看不出如何更好地解釋它。你也可以閱讀:http://electricbeach.org/?p=148 –

+0

我現在清除了..謝謝... :) –

0

在MVVM中,如果您的ViewModel公開方法而不是命令,您可能需要從視圖中調用方法。行爲允許這樣做。

您聲明「我們在WPF MVVM中有方法操作」,但據我所知「方法操作」不是WPF的一部分。如果您使用助手MVVM庫,它可能會提供「方法操作」,可以將方法封裝在命令中。在這種情況下,MVVM模式使用方法不需要行爲。

但請注意,行爲在MVVM之外有其他用途。

0

我強烈建議你閱讀這code project article是 證明
- 什麼是附加的行爲
- 什麼是它的替代品
- 它的優點相比,類似的問題的替代解決方案

的想法是,你在元素上設置附加屬性,以便可以從暴露附加屬性的類訪問元素。一旦這個類可以訪問元素,它就可以將事件掛在它上面,並且爲了響應這些事件觸發,使元素執行它通常不會做的事情。這是創建和使用子類的非常方便的選擇,並且非常適合XAML。從上述文章中

掛鉤的對象上的事件,並做一些火災時

結論是 肯定不是一個突破創新,由 的任何想象。從這個意義上講,附加行爲只是另一種方式來做同樣的事情。然而,這種技術的重要性在於它具有名稱,這可能是任何設計模式中最重要的方面。此外,您可以創建附加行爲,並將其應用於任何元素,而無需修改系統的任何其他部分。這是對Pascal Binggeli提出的問題以及許多其他問題的簡潔解決方案。這是 在您的工具箱中具有的非常有用的工具。