鑑於我有以下的微件(和與它相連的視圖):綁定列表框到屏幕的集合(小部件)
public class MyWidgetViewModel : Screen {}
我可以使用和在另一個視圖容易顯示它。視圖模型「託管」小部件如下所示:
public class WidgetWorkspaceViewModel : Screen
{
private Screen myWidget = new MyWidgetViewModel();
public Screen MyWidget
{
get { return myWidget; }
set { myWidget = value; }
}
}
,並且控制顯示在WidgetWorkspaceView這樣的:
<ContentControl x:Name="OneWidget"/>
這一切都工作得很好。但是現在我想改變它,以便WidgetWorkspaceViewModel包含一個Widget集合,而WidgetWorkspaceView應該一個接一個地顯示它們。我在解決這個問題方面遇到了一些問題。
視圖模型應該是這樣的:
private List<Screen> widgets;
public List<Screen> Widgets
{
get { return widgets; }
set { widgets = value; NotifyOfPropertyChange(() => Widgets); }
}
的這部分代碼是OK的,因爲我已經綁定的窗口小部件的組合框和組合框正確地顯示一個列表控件。但是我在視圖上「託管」小部件時遇到了問題。這是我試過的WidgetWorkspaceView但沒有成功使用XAML:
<ListBox x:Name="Widgets">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<ContentControl Width="100" Height="100" DataContext="{Binding}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
基於斷點,數據綁定部分工作正常,但我沒有得到繪製的小部件。
任何想法如何解決這個問題?我正在使用Caliburn.Micro來幫助綁定。
非常好,謝謝你的幫助!我通過刪除ItemTemplate定義解決了這個問題,我將考慮使用Conductor。 – 2011-03-08 10:00:39