Caliburn Documentation的导体和成分对我有些困惑。
首先,我不清楚何时应该使用导体(以及何时使用导体,应使用哪种类型)。我的印象是,导体可以在父视图/视图模型的不同组件(具有自己的视图/视图模型)之间激活/切换。假设这是正确的,为什么不应该使用导体并激活/停用,而不是像<ContentControl x:Name="Whatever"></ContentControl>
这样绑定到父视图模型中的字段?
对我来说,还不清楚使用AllActive导体的正确方法。
总而言之,我要的是更好地解释何时使用导体,以及何时/如何使用每种导体类型。
导体是某种视图模型,它拥有其他视图模型并控制其生命周期,因为视图模型不知道何时显示,隐藏或关闭视图模型。这是指挥的角色。
Conductor<T>.Collection.AllActive
是构建导体,用于管理项目的集合,该项目的所有元素都可以同时处于活动状态。调用ActivateItem
时,它将被添加到项目的内部集合中;调用DeactivateItem
时,将删除项目。例如,ItemsControl
或Grid
带有多个子项,它们同时处于活动状态
Conductor<T>.Collection.OneActive
只能同时具有一个激活项目,激活期间上一个项目被禁用。例如TabControl
,一次可以存在许多选项卡项目,但一次只能显示并显示一个选项卡。