2013-08-05 2 views
2

Просто быстрый вопрос для всех вас.WPF Combobox issues

У меня есть две выпадающие списки, один из которых имеет данные жестко закодированные с:

<ComboBox> 
    <ComboBoxItem/> 
</ComboBox> 

и когда я пытаюсь использовать случай заявление о SelectionChanged я получаю от Convert.ToString(cboForm.SelectedValue): "System.Windows.Controls.ComboBoxItem: Directional Bore" в качестве значения.

Теперь в той же форме у меня есть еще одна комбобокс с данными, которые я заполняю comboboc.items.add(), и значение этой выпадающей ячейки после SelectionChanged является фактическим значением текста.

Есть ли что-нибудь, что я могу сделать, чтобы не иметь "System.Windows.Controls.ComboBoxItem: " в выбранном значении?

Дело заявление:

string caseSwitch = cboForm.SelectedValue.ToString(); 
switch (caseSwitch) 
{ 
    case "System.Windows.Controls.ComboBoxItem: Directional Bore": 
    { 
     ReportClass.DirBoreReport("","",""); 
     cboForm.SelectedIndex = -1; 
     //MainAccess.Mw.SpecificForm = false; 
     //MainAccess.Mw.frmPage.Height = 4400; 
     //MainAccess.Mw.HoldPage = new Uri("DirectionalBore_Combined.xaml", UriKind.Relative); 
     //if (NavigationService != null) NavigationService.Source = MainAccess.Mw.HoldPage; 
     //MainAccess.Mw.SectionBar_DirectionalBore.Visibility = Visibility.Visible; 
     //MainAccess.Mw.scroll.VerticalScrollBarVisibility = ScrollBarVisibility.Visible; 
     //MainAccess.Mw.lblForm.Content = "DIRECTIONAL BORE"; 
     //MainAccess.Mw.Sbar = MainAccess.Mw.SectionBar_DirectionalBore; 
     break; 
    } 
} 

Xaml:

<ComboBox x:Name="cboForm" TabIndex="3" HorizontalAlignment="Left" Margin="746,618,0,0" VerticalAlignment="Top" Width="630" FontSize="48" FontWeight="Bold" Height="74" SelectionChanged="cboForm_SelectionChanged" > 
    <ComboBoxItem Content="Directional Bore" HorizontalAlignment="Left" /> 
    <ComboBoxItem Content="Drain Tile Break" HorizontalAlignment="Left"/> 
    <ComboBoxItem Content="Fiber Installation" HorizontalAlignment="Left"/> 
</ComboBox> 

Спасибо!

+0

Вы должны переопределить свои объекты ToString(). – Sonhja

+0

@Sonhja Пробовал, что, не повезло, то же самое продолжает происходить. – Herrozerro

+0

Можете ли вы показать полный «отчет о ситуации с коммутатором» – MethodMan

ответ

5

Сначала преобразуйте SelectedItem в ComboBoxItem, а затем ComboBoxItem.Content будет иметь строковое значение.

 ComboBoxItem item = this.cboForm.SelectedItem as ComboBoxItem; 
     if (item != null) 
     { 
      MessageBox.Show(item.Content.ToString()); 
     } 
+0

Спасибо! это сработало! – Herrozerro

+0

просто вопрос, как это получается, без необходимости его конвертировать, когда поле со списком заполняется из другого источника? – Herrozerro

+0

Когда вы используете 'ComboBoxItem',' ComboBox 'ItemSource на самом деле представляет собой List , но когда вы заполняете код из-за вашего, назначаете List в ItemsSource, поэтому преобразование не требуется во втором случае. –