【问题标题】:How to bind multiple ViewModels into Expanders using Caliburn.Micro?如何使用 Caliburn.Micro 将多个 ViewModel 绑定到扩展器中?
【发布时间】:2018-07-02 10:15:16
【问题描述】:

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

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

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

但是当我将ItemsControlDataTemplate 设置为Expander 时,Caliburn 不再“找到”视图模型的视图(因此扩展器为空):

    <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>

问题是我会有很多项目,它们的内容会大到足以填满屏幕,那么我怎样才能让Expander 正确设置它的内容呢?

【问题讨论】:

  • 扩展器是一个内容控件。您是否尝试过 (不使用 ContentTemplate)?
  • @mm8 就是这样,谢谢!您能否将其添加为答案,以便我将其标记为已回答?

标签: wpf mvvm mef caliburn.micro


【解决方案1】:

Expander 实际上是 ContentControl 所以这应该可以工作:

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

【讨论】:

    猜你喜欢
    • 2011-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-12
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 2014-07-15
    相关资源
    最近更新 更多