wp7 中列表选择器的选定索引

本文关键字:索引 选择器 列表 wp7 | 更新日期: 2023-09-27 18:36:15

我的页面中有 silverlight listpicker 控件,它与 List<Countries> let say

绑定

美国

英国

巴基斯坦

丹麦

我将此列表

与我的列表选择器绑定国家我希望默认选择的值将是巴基斯坦

我可以这样设置选定的项目

listpickercountries.selectedindex = 2;

有什么办法我可以从代码隐藏中找到巴基斯坦的索引,并像这样设置此列表选择器的这个选定

内容
listpickercountries.selectedindex.Contain("Pakistan"); 

或类似的东西???

wp7 中列表选择器的选定索引

您必须在列表中搜索所需的国家/地区,检查它是哪个索引,然后在选择器本身上设置所选索引。

索引将是相同的。

我假设你的国家类是,

public class Countries
    {
        public string name { get; set; }
    }

然后你可以做,

listpickercountries.ItemsSource = countriesList;
listpickercountries.SelectedIndex = countriesList.IndexOf( countriesList.Where(country => country.name == "Pakistan").First());

我建议同时绑定ItemsSource和SelectedItem

<toolkit:ListPicker x:Name="listpickercountries" 
                ItemsSource="{Binding Countries}"
                SelectedItem="{Binding SelectedCountry, Mode=TwoWay}">

在代码隐藏中,设置视图模型

public SettingsPage()
{
    ViewModel = new ViewModel();
    InitializeComponent();
}
private ViewModel ViewModel
{
    get { return DataContext as ViewModel; }
    set { DataContext = value; }
}

并在视图中模型

public class ViewModel : INotifyPropertyChanged
{
    public IList<Country> Countries
    {
        get { return _countries; }
        private set
        {
            _countries = value;
            OnPropertyChanged("Countries");
        }
    }
    public Country SelectedCountry
    {
        get { return _selectedCountry; }
        private set
        {
            _selectedCountry= value;
            OnPropertyChanged("SelectedCountry");
        }
    }
}

从那里,您可以随时设置所选国家/地区的值,它将在选择器中设置所选项目例如:

// from code behind
ViewModel.SelectedCountry = ViewModel.Countries.FirstOrDefault(c => c.Name == "Pakistan");
// From ViewModel
this.SelectedCountry = this.Countries.FirstOrDefault(c => c.Name == "Pakistan");