如何使用 Caliburn.Micro 将多个 ViewModel 绑定到 Expander 中?
How to bind multiple ViewModels into Expanders using Caliburn.Micro?
我有一个 XAML 视图,它应该包含其他视图的实例,并且这些视图应该显示在一个列表中,每个视图都包含在它自己的 Expander
中。我正在使用 Caliburn.Micro 和 MEF 来设置所有组件。
ItemsControl
本身工作正常(正确显示视图的 content):
<ItemsControl ItemsSource="{Binding CursorTools}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl cal:View.Model="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
但是当我将 ItemsControl
的 DataTemplate
设置为 Expander
时,Caliburn 不再 "finds" 视图模型的视图(因此扩展器是空):
<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
正确设置其内容?
Expander
实际上是一个 ContentControl
所以这应该有效:
<Expander Header="{Binding Path=Title}" cal:View.Model="{Binding}" />
我有一个 XAML 视图,它应该包含其他视图的实例,并且这些视图应该显示在一个列表中,每个视图都包含在它自己的 Expander
中。我正在使用 Caliburn.Micro 和 MEF 来设置所有组件。
ItemsControl
本身工作正常(正确显示视图的 content):
<ItemsControl ItemsSource="{Binding CursorTools}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl cal:View.Model="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
但是当我将 ItemsControl
的 DataTemplate
设置为 Expander
时,Caliburn 不再 "finds" 视图模型的视图(因此扩展器是空):
<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
正确设置其内容?
Expander
实际上是一个 ContentControl
所以这应该有效:
<Expander Header="{Binding Path=Title}" cal:View.Model="{Binding}" />