我在尝试在 WPF 中动态生成内容并在绑定数据之后遇到了一些麻烦。
我有以下场景: TabControl - 通过 DataTemplate 动态生成的 TabItems - 在 TabItems 内,我有由 DataTemplate 生成的我希望绑定的动态内容(列表框)。
代码如下:
::选项卡控件
<TabControl Height="252" HorizontalAlignment="Left" Name="tabControl1" VerticalAlignment="Top" Width="458" Margin="12,12,12,12" ContentTemplate="{StaticResource tabItemContent}"></TabControl>
::TabControl 生成 TabItems 的模板
<DataTemplate x:Key="tabItemContent">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<ListBox ItemTemplate="{StaticResource listBoxContent}" ItemsSource="{Binding}">
</ListBox>
</Grid>
</DataTemplate>
::每个 TabItem 内的 ListBox 模板
<DataTemplate x:Key="listBoxContent">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="22"/>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Source="{Binding Path=PluginIcon}" />
<TextBlock Grid.Column="1" Text="{Binding Path=Text}" />
</Grid>
</DataTemplate>
因此,当我尝试在循环内的代码上执行此操作以创建 tabitems 时:
TabItem tabitem = tabControl1.Items[catIndex] as TabItem;
tabitem.DataContext = plugins.ToList();
其中 'plugins' 是一个 Enumerable
ListBox 没有界限。我还尝试在 TabItem 中找到 ListBox 来设置 ItemSource 属性,但根本没有成功。
我怎么做?