在wp7中选择了listpicker的索引

时间:2012-06-05 12:58:55

标签: c# windows-phone-7 xaml silverlight-toolkit

我的页面中有silverlight listpicker控件,并且绑定了List<Countries>让我们说

美国

英国

巴基斯坦

丹麦

我将此列表与我的listpickercountries绑定我想要默认选择的值将是巴基斯坦

我可以用这种方式设置所选项目

listpickercountries.selectedindex = 2;

有什么方法可以找到巴基斯坦的索引从代码背后并设置这个listmat的像这样的选择

listpickercountries.selectedindex.Contain("Pakistan"); 

或类似的东西???

3 个答案:

答案 0 :(得分:0)

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

索引将是相同的。

答案 1 :(得分:0)

我假设您的国家/地区类为,

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

然后你就可以了,

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

答案 2 :(得分:0)

我建议将ItemsSource和SelectedItem绑定为

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

在你的代码中,设置一个viewmodel

public SettingsPage()
{
    ViewModel = new ViewModel();
    InitializeComponent();
}

private ViewModel ViewModel
{
    get { return DataContext as ViewModel; }
    set { DataContext = value; }
}

在viewmodel中

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");
        }
    }

}

从那里你可以随时设置SelectedCountry的值,它将在选择器中设置所选项目 例如:

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

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