Caliburn.Micro,HelloScreens-sample

时间:2011-12-01 23:59:40

标签: caliburn.micro

我正在尝试了解HelloScreens附带的Caliburn.Micro示例。 ShellView.xaml底部包含ContentControl。有人可以解释这个元素的重要性吗?我试图在没有看到任何差异的情况下对其进行评论。

<UserControl x:Class="Caliburn.Micro.HelloScreens.Shell.ShellView"
             xmlns:...>
    <Grid>
    <local:TiledBackground SourceUri="/Resources/Images/backgroundtexture.png" />
        <Image Source="/Resources/Images/backgroundshadow.png"
               Stretch="Fill" />

        <ct:DockPanel>
          <.../>
        </ct:DockPanel>

        <!--  Whats this one for?  --/>
        <ContentControl x:Name="Dialogs" 
                        VerticalContentAlignment="Stretch"
                        HorizontalContentAlignment="Stretch"/>
    </Grid>

</UserControl>

它绑定到viewmodels Dialogs - 属性,这是IConductActiveItem的自定义实现,但它用于什么?

1 个答案:

答案 0 :(得分:6)

每当你有一个与视图模型属性同名的ContentControl时,Caliburn.Micro将找到该视图模型的相应视图,将视图注入ContentControl,并绑定查看模型到视图。

在这种情况下,Dialogs属性就是您所说的IDialogManager类型,它解析为DialogConductorViewModel(指挥类型)。因此DialogConductorView被注入内容控件。

此视图显示应用程序中的对话框,如果您查看视图,它还会显示ContentControl,显示当前的ActiveItem。这是典型的Caliburn.Micro指挥。

<Controls:CustomTransitionControl x:Name="ActiveItem" Margin="8" />

请注意DialogConductorView始终显示在ShellView的应用内容上,但Grid内的DialogConductorView仅在ActiveItem时可见}不是空的。

<Grid Visibility="{Binding ActiveItem, Mode=TwoWay, 
Converter={StaticResource nullToCollapsed}}"