第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么要避免WPF MVVM模式中的代碼隱藏?

為什么要避免WPF MVVM模式中的代碼隱藏?

月關(guān)寶盒 2019-11-13 09:24:45
在Josh Smith 的文章“ 具有Model-View-ViewModel設(shè)計模式的WPF應(yīng)用程序”中,作者說:(1)在設(shè)計良好的MVVM架構(gòu)中,大多數(shù)視圖的背后代碼應(yīng)為空,或者最多只能包含操縱該視圖中包含的控件和資源的代碼。(2)有時也有必要在與ViewModel對象進(jìn)行交互的View的代碼隱藏中編寫代碼,例如,鉤住事件或調(diào)用否則很難從ViewModel本身調(diào)用的方法。我的問題是,如下所示,為什么這樣的方法AttachedCommandBehavior或InvokeCommandAction試圖避免編碼背后的編碼。讓我解釋更多細(xì)節(jié)。就(1)而言,我認(rèn)為與AttachedCommandBehavior中的以下情況類似。為界沒有實現(xiàn)ICommandSource的MouseRightButtonDown,你不能經(jīng)常綁定的事件和ICommand,但可以用做AttachedCommandBehavior。<!-- I modified some code from the AttachedCommandBehavior to show more simply --><Border>    <local:CommandBehaviorCollection.Behaviors>           <local:BehaviorBinding Event="MouseRightButtonDown"                   Command="{Binding SomeCommand}"                   CommandParameter="A Command on MouseRightButtonDown"/>    </local:CommandBehaviorCollection.Behaviors></Border>要么我們可以使用System.Windows.Interactivity.InvokeCommandAction。<Border xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" >    <i:Interaction.Triggers>        <i:EventTrigger EventName="MouseRightButtonDown">            <i:InvokeCommandAction Command="{Binding SomeCommand}"                CommandParameter="A Command on MouseRightButtonDown"/>        </i:EventTrigger>    </i:Interaction.Triggers></Border>但,我們使用下面的XAML及其代碼背后的Border_MouseRightButtonDown方法,該方法鏈接到上述(2)Josh Simth。<Border MouseRightButtonDown ="Border_MouseRightButtonDown"/>我認(rèn)為使用上面的codebehind并不錯,因為兩者之間的區(qū)別僅在于綁定命令或添加事件處理程序的地方。你怎么看待這件事?
查看完整描述

3 回答

?
UYOU

TA貢獻(xiàn)1878條經(jīng)驗 獲得超4個贊

MVVM可以完全拆分代碼和頁面設(shè)計;程序員只關(guān)心編碼,而設(shè)計師只關(guān)心設(shè)計。但:

  1. 我從未見過任何使用Blend或了解XAML的設(shè)計師。

  2. 幾乎所有XAML都是由編碼員自己編寫的。


查看完整回答
反對 回復(fù) 2019-11-13
?
九州編程

TA貢獻(xiàn)1785條經(jīng)驗 獲得超4個贊

代碼隱藏沒有本質(zhì)上的壞處。對于簡單的情況,擁有它很好。但是,在許多情況下,UI邏輯可能變得難以管理。將該邏輯封裝在附加的行為和視圖模型中,使我們能夠隔離變量(并對其進(jìn)行測試),從而更易于理解和維護(hù)。

如果需要考慮可測試性,則可以在視圖模型和附加行為中封裝的UI邏輯越多,無需借助UI測試就可以驗證的邏輯越多。(雖然它并不能完全消除對UI測試的需求,但它確實提供了進(jìn)行UI測試之前的第一級驗證,這將花費更多的時間/資源。


查看完整回答
反對 回復(fù) 2019-11-13
  • 3 回答
  • 0 關(guān)注
  • 976 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號