如何使用Caliburn.Micro将多个ViewModel绑定到Expanders?

时间:2018-01-23 14:40:30

标签: wpf mvvm mef caliburn.micro

我有一个XAML视图,应该包含其他视图的实例,这些视图应该显示在列表中,每个视图都包含在自己的Expander中。我使用Caliburn.Micro和MEF来设置所有组件。

ItemsControl本身工作正常(正确显示视图的内容):

    <ItemsControl ItemsSource="{Binding CursorTools}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <ContentControl cal:View.Model="{Binding}" />
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

ViewModels in an ItemsControl

但是,当我将ItemsControl&#39; DataTemplate设为Expander时,Caliburn不会再发现&#34; viewmodel的视图(因此扩展器为空):

    <ItemsControl ItemsSource="{Binding CursorTools}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <!--<ContentControl cal:View.Model="{Binding}" />-->
                <Expander Header="{Binding Path=Title}">
                    <Expander.ContentTemplate>
                        <DataTemplate>
                            <ContentControl cal:View.Model="{Binding}" />
                        </DataTemplate>
                    </Expander.ContentTemplate>
                </Expander>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

ViewModels in an Expander

问题是我会有很多项目,而且他们的内容会足够大以填满屏幕,那么如何让Expander正确设置其内容?

1 个答案:

答案 0 :(得分:2)

Expander实际上是ContentControl所以这应该有效:

<Expander Header="{Binding Path=Title}" cal:View.Model="{Binding}" />