日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CozyRSS开发记录19-窗口标题栏交互

發布時間:2025/3/20 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CozyRSS开发记录19-窗口标题栏交互 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CozyRSS開發記錄19-窗口標題欄交互

1、談談對mvvm解耦的看法

在使用mvvm時,如何操作窗口,這是一個問題。這個問題的關鍵點是:mvvm是把viewviewmodel解耦了的,很多寫法一不小心又把它們耦合起來了。

那么,viewviewmodel解耦有什么好處,不解偶又有什么壞處呢?我這里也不深入討論了,只說一個場景:CozyRSS假使要做android版和ios版了,我的model和處理的庫肯定是不用改的,那viewmodel需要改嗎?

前面說到,mvvmlight是跨平臺的,本身是可以在xamarin里用的。那么,理想的情況是,我只需要重寫view,修改控件和布局,內容和命令依然是綁定在viewmodel上的。那么問題來了,viewmodel如果依賴了view,那就非改不可了。

舉一個這樣的例子:

?

這是SO上某個答主的答案,如何在用mvvm的情況下,實現窗口拖動。這里view并沒有什么問題,綁定到命令。接下來看viewmodel

?

這里,viewmodel依賴到Window了,換View的時候,非改不可了。

針對這種情況,有幾種處理方法:依賴屬性、消息...不管哪種方法,總之,就是讓viewmodel在不知道view的情況下,通知view做點事情。我用了另外一種取巧的方法,提供一些Actions類,Actions會依賴view,而viewmodel依賴Actions。雖然viewmodel依然多了依賴,但是移植時,只需要考慮到這些需要修改的Actions,而不用動viewmodel,而需要修改的依賴viewActions是很少的。

2、Actions

我們需要讓標題欄支持:窗口拖動、雙擊最大化。對應的代碼很簡單:

?

然后讓viewmodel依賴這些Actions,而不依賴view

?

3、綁定事件

最后,我們用EventTrigger來綁定下兩個事件:

?

至此,窗口標題欄支持拖動和雙擊最大化就完成了。

轉載于:https://www.cnblogs.com/zapline/p/5526795.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的CozyRSS开发记录19-窗口标题栏交互的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。