在我的WPF应用程序中,我有一个数据导入功能,可将数据从Excel文件导入到数据库中。WPF - 如何获取在DataTemplate中定义的ComboBox的SelectedIndex?
为了允许用户将列从他们的Excel文件映射到我的数据库表中的列,我在数据库表列名旁边的ComboBox
中显示Excel列的列表,允许用户选择匹配的Excel列从ComboBox
。
这与含有ComboBox
和TextBlock
每个项目显示在一个ListBox
。
的ListBox
是数据绑定到一个Dictionary<ColumnsClass, List<string>>
其中ColumnsClass
是包含数据库列名称和其他细节的简单对象和List<string>
只是一个Excel文件中列名的列表。为了显示在ComboBox
的List<string>
我有一个DataTemplate这样定义:
<DataTemplate x:Key="ColumnList">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"></ColumnDefinition>
<ColumnDefinition Width="1*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<ComboBox Grid.Column="0" ItemsSource="{Binding Value, Mode=OneWay}">
</ComboBox>
<TextBlock Grid.Column="1" Text="{Binding Key, Mode=OneWay}"/>
</Grid>
</DataTemplate>
一旦用户映射Excel列到数据库列名,开始我需要能够得到数据库列名的进口以及ListBox
中每个项目的匹配'ComboBox''SelectedIndex'值,但ItemsSource中的每个项目实际上都是KeyValuePair<ColumnsClass, List<string>>
,所以我不明白如何在遍历ListBox.Items
集合时获取'ComboBox''SelectedIndex'值...
任何想法?
请注意,在这种情况下,您不必指定'ColumnDefinition'的宽度,因为'1 *'是默认值。 – svick 2011-06-08 23:34:40
对,这是已修改的代码,定义了更多的列,并且'1 *'不是实际代码中的值... – 2011-06-08 23:43:03