我在外殼視圖中使用棱鏡TabControl Region
。WPF如何執行當前活動tabitem的命令?
每個TabItem
包含AView
和AViewModel
。
我可以使用AViewModel
中的屬性IsActive
屬性確定當前活動的TabItem
。
IsActive
只有當前選定的TabItem屬性設置爲true
。
我有Shell
視圖內的按鈕,它負責執行TabItems
內視圖的邏輯。
什麼啓用禁用根據當前活動TabItem
(組可以執行command
到true
或false
)按鈕,僅用於有源視圖執行邏輯的正確方式。從放置在其他視圖中的按鈕?
我已設法通過創建composite command
執行command
,然後註冊從AViewModel
命令到composite command
,並且shell
內的按鈕結合composite command
。
這種方法的問題是,如果任何命令的返回false
他們都是除了一個(主動TabItem
),沒有命令的執行。
CompositeCommand類維護子命令列表 (DelegateCommand實例)。 CompositeCommand類的Execute方法簡單地依次調用每個 子命令上的Execute方法。 CanExecute方法類似地調用每個子命令的CanExecute方法,但是如果任何子項 命令不能被執行,則CanExecute方法將返回false。 換句話說,默認情況下,只有在所有子命令都可以執行時才能執行復合命令 。 Source
就是這樣,在大型應用程序中,例如像使用Prism的區域,您總是保存活動區域。正是因爲這個原因,當你必須執行一個命令並在特定的上下文中處理它時。所以在你的ViewModel中擁有活動區域是不夠的,你必須讓它暴露並且可用於系統範圍。 – Mishka