数据绑定到Windows8应用程序中Listview内的组合框

本文关键字:组合 Listview Windows8 应用程序 数据绑定 | 更新日期: 2023-09-27 17:58:18

在windows 8应用程序上工作时,我有来自sqlite表的列表,并希望将此列表与combobox绑定。我的xaml是这样的。

<ListView Grid.Row="1" x:Name="CityListView"  Height="180">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="30" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <Border Grid.Column="1" BorderThickness="0" Background="#7CBF42" CornerRadius="6">
                    <StackPanel  Orientation="Horizontal" Width="auto" Height="auto">
                        <ComboBox ItemsSource="{Binding CityList}" DisplayMemberPath="Name" SelectedValuePath="Name"/>
                    </StackPanel>
                </Border>
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

在.cs文件中,我从sqlitedb表city_list中获取城市列表,其中包含两个字段Name和code。

public ObservableCollection<city_list> CityList { get; private set; }
    public CityListClass()
    {
        this.InitializeComponent();
        CityList = new ObservableCollection<city_list>();
        CityListView.DataContext = this;
       // Adds a listview item 
       CityListView.Items.Add(1);
     getCityListFormDB();         
    }

private async void getCityListFormDB()
    {
        try
        {
            var dbpath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "city_db.sqlite");

            using (var conn = new SQLite.SQLiteConnection(dbpath))
            {
                var result = from x in conn.Table<city_list>() select x;
                foreach (var item in result)
                {
                     CityList.Add(item);
                }                  
                conn.Dispose();
                conn.Close();
            }
        }
        catch(SQLiteException EX)
        {
        }
    }
public class city_list
    {            
        public string Name{ get; set; }
        public int code{ get; set; }
    }

我无法理解为什么combobox没有显示任何列表。请帮忙。

数据绑定到Windows8应用程序中Listview内的组合框

尝试将DataTemplate添加到组合框中。

<StackPanel  Orientation="Horizontal" Width="auto" Height="auto">
    <ComboBox ItemsSource="{Binding CityList}" DisplayMemberPath="Name" SelectedValuePath="Name">
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Name}"/>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>
</StackPanel>

您还应该检查以确保getCityListFormDB正在返回行。