将ObservbleCollection绑定到XAML中的组合框 - Windows手机

时间:2015-10-22 11:21:18

标签: xaml windows-phone-8.1

我尝试将ObservableCollection变量绑定到XAML中的ComboBox。数据没有约束力。

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

1 个答案:

答案 0 :(得分: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绑定到字符串集合。
您需要将ComboBox的ItemsSource绑定到集合,然后每个TextBlock应包含其中一个字符串。