2016-05-04 2 views
0

Я добавил новый ComboBox для изменения темы. И когда я выбираю элемент, он работает хорошо, выбор изменяется, но когда я получаю текст из этого ComboBox, он возвращает другой текст элемента в ComboBox. Я не знаю, в чем проблема, я заметил это, добавив отладку TextBox и печать внутри Text из ComboBox при событии, когда я меняю выбор.Комбобокс текст дает фальшивую информацию

Вот код:

private void Themecb_SelectionChanged(object sender, SelectionChangedEventArgs e) 
     { 
      if (themeedit == 1) 
      { 
       String txt = Themecb.Text; 
       TextBox1.Text = "THEME WORK " + txt; 
       Tuple<AppTheme, Accent> appStyle = ThemeManager.DetectAppStyle(Application.Current); 
       ThemeManager.ChangeAppStyle(Application.Current, 
              ThemeManager.GetAccent(txt), 
              ThemeManager.GetAppTheme("BaseLight")); // or appStyle.Item1 
      } 
     } 

А вот XML файл:

<ComboBox x:Name="Themecb" 
HorizontalAlignment="Left" 
Margin="237,227,0,0" 
VerticalAlignment="Top" 
Width="120" 
SelectionChanged="Themecb_SelectionChanged"/> 
+0

Вы пытались получить значение по свойству SelectedItem? Попробуйте заменить строку 'String txt = Themecb.Text;' на 'String txt = Themecb.SelectedItem в виде строки;' пожалуйста и сообщите мне, если она также возвращает неправильное значение. –

+0

Спасибо, что сработало для меня! –

+0

Рад знать, что это помогло! Я опубликую этот комментарий в качестве ответа, пожалуйста, отметьте его как правильно. –

ответ

1

ли вы пытаетесь получить значение по SelectedItem собственности ? Попробуйте заменить строку String txt = Themecb.Text; на String txt = Themecb.SelectedItem as string;

0

заменить Themecb.Text с Themecb.SelectedValue

+0

Нет, я получил ошибки на этом .... –

0

ComboBox имеет два основных СВОЙСТВА SelectedText и SelectedValue

SelectedT внутр это строка текста выбранного элемента SelectedValue это значение, которое используется для идентификации каждого элемента в интерфейсе

так в вашем случае попробуйте как ниже

if (themeedit == 1) 
      { 
       String txt = Themecb.SelectedText; 
       TextBox1.Text = "THEME WORK " + txt; 
       Tuple<AppTheme, Accent> appStyle = ThemeManager.DetectAppStyle(Application.Current); 
       ThemeManager.ChangeAppStyle(Application.Current, 
              ThemeManager.GetAccent(txt), 
              ThemeManager.GetAppTheme("BaseLight")); // or appStyle.Item1 
      } 
+0

Не работает, он говорит, что SelectedText не распознается .... –

Смежные вопросы