【发布时间】:2011-03-03 08:21:15
【问题描述】:
我在尝试在 WPF 中动态生成内容以及在它绑定数据之后遇到了一些麻烦。
我有以下情况: 选项卡控件 - 通过 DataTemplate 动态生成 TabItems - 在 TabItems 中,我有希望绑定的由 DataTemplate 生成的动态内容(列表框)。
代码如下:
::TabControl
<TabControl Height="252" HorizontalAlignment="Left" Name="tabControl1" VerticalAlignment="Top" Width="458" Margin="12,12,12,12" ContentTemplate="{StaticResource tabItemContent}"></TabControl>
::TabControl生成TabItem的模板
<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' 是可枚举的
ListBox 没有边界。 我还尝试在 TabItem 中找到 ListBox 来设置 ItemSource 属性,但根本没有成功。
我该怎么做?
【问题讨论】:
标签: wpf data-binding datatemplate datacontext itemssource