2013-03-08 6 views
1

Я создал выпадающий в XAML как это:Combobox SelectedValue не показывает?

ComboBox x:Name="cbTest" ItemsSource="{Binding}" SelectedValue="{Binding Test, Mode=TwoWay}" HorizontalAlignment="Left" Margin="0,10,0,0" Width="250" SelectionChanged="cbTest_SelectionChanged"/> 

И выпадающий заполняется следующим ItemSources:

cbTest.ItemsSource = new string[] { "Left", "Right", "Center" }; 

я вижу 3 строки в Combobox, но это не делает покажите SelectedValue, что я выбрал раньше. Это свойство:

private short _test; 
public short Test 
{ 
    get 
    { 
     return _test; 
    } 
    set 
    { 
     _test = value; 
     NotifyPropertyChanged(); 
    } 
} 

Тест дает мне следующие данные: «Слева». Итак, я получаю данные, но привязка не работает!

Спасибо!

+0

Это, вероятно, опечатка в вопросе - но ваше свойство возвращает _test с прописными буквами Т и множества _test со строчным т, который даст вам эти симптомы, особенно если _Test - это действительная переменная, которую вы определили в другом месте. –

+0

Также ваши элементы являются строками, но тип данных теста короткий, что может вызвать проблемы. –

+0

@ExceptionGuy, скопируйте/вставьте свой точный код. Как отметил Даниил, у вас набралось несколько ошибок. –

ответ

1

Проблема в том, что вы не можете преобразовать System.String в System.Int16 (короткий), и вы не можете разобрать либо потому, что «Слева», «Вправо», «Центр» не являются цифрами.

Попробуйте использовать string как ваш SelectedValue

private string _test; 
public string Test 
{ 
    get 
    { 
     return _test; 
    } 
    set 
    { 
     _test = value; 
     NotifyPropertyChanged(); 
    } 
} 
+0

Это то, что я делаю, когда я их выбираю: 'string Test; if (cbTest.SelectedIndex == 0) { test = "Слева"; _vm.Test = test; } else if (cbTest.SelectedIndex == 1) { test = "Right"; _vm.Test = test; } else if (cbTest.SelectedIndex == 2) { test = "Центр"; _vm.Test = test; } ' – ExceptionGuy

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