在我的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