我想用XAML做一个非常简单的事情(我认为)。
我想显示一个用户控件列表' UserControl A' (使用viewModels' ViewModel A')在ItemControl中,托管在' UserControl B'。
' ViewModel B'包含一个属性,它是一个observableCollection' UserControls A'。
在' userControls A'的Ctor中,我设置了:
Me.DataContext = New ViewModelA()
在' userControlB'的Ctor中,我设置了相同的内容,但使用的是ViewModel B'。
' ViewModel A'包含两个属性(整数)'行'和' Col'。
我想要的是绑定每个用户控件A'以及'Col'的价值观。和' Row'在用户控件B'。
中托管的网格中以下是我所做的: UserControl B:
<ItemsControl ItemsSource="{Binding ListOfUserControl_A}" Margin="1.5">
<ItemsPanelTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
</Grid>
</ItemsPanelTemplate>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Grid.Column" Value="{Binding Col}" />
<Setter Property="Grid.Row" Value="{Binding Row}" />
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate>
<local:UserControl_A/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
在此过程之前,该集合已正确填充。
但是在运行时我有这个错误(翻译自法语): &#34;收藏品必须为空,才能使用&#39; ItemsSource&#39;&#34;。
我之前遇到的另一个错误是&#39; itemTemplate和ItemTemplateSelector对UserControl_B无效...&#39; ...
我做错了什么?
答案 0 :(得分:0)
您忘记将ItemsPanelTemplate
包裹在ItemsControl.ItemsPanel
标记中。如果没有ItemsControl
将ItemsPanelTemplate
视为项目,并且您已设置ItemsSource
,则会收到该错误
<ItemsControl ItemsSource="{Binding ListOfUserControl_A}" Margin="1.5">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>