2015-10-22 5 views
1

Я попытался привязать переменную ObservableCollection к ComboBox в XAML. Данные не являются обязательными.Binding ObservbleCollection to Combo box в XAML - телефон Windows

XAML файл за

<ComboBox x:Name="cmbCity" Height="44" Width="150" Grid.Row="4" 
      ItemsSource="{Binding}"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Margin="5" Text="{Binding lstCity}"/> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox>  

кода (После перехода на другую страницу)

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    UserInfo userInfo = new UserInfo(); 
    userInfo.UserName = "Gayathri"; 
    userInfo.Country = "India"; 
    userInfo.State = "TN";  
    ObservableCollection<string> cityInfo = new ObservableCollection<string>(); 
    cityInfo.Add("Chennai"); 
    cityInfo.Add("Cuddalore"); 
    cityInfo.Add("Pondicherry"); 
    cityInfo.Add("Villupuram");  
    userInfo.lstCity = cityInfo;  
    this.DataContext = userInfo; 
} 

Здесь я передаю значение в DataContext. Данные привязываются к textbox, но не к Combobox.

Выход:

Output

ответ

2

Ты привязок немного неправильно.
Они должны быть такие:

<ComboBox x:Name="cmbCity" Height="44" Width="150" Grid.Row="4" 
      ItemsSource="{Binding lstCity}"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Margin="5" Text="{Binding}"/> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

(я переместил ссылку на lstCity)

Ранее вы вяжете весь DataContext в ComboBox, а затем каждый TextBlock к коллекции строк.
Вам необходимо привязать ItemsSource ComboBox к коллекции, а затем каждый TextBlock должен содержать одну из строк.

+0

Благодарим вас за четкое объяснение. – user2115618

+0

@ user2115618 Если это решит проблему, отметьте ее как ответ;) –

+0

Как отметить это как ответ – user2115618

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