1

我的页面中有 silverlight listpicker 控件,并且它与List<Countries>Let Say绑定

美国

英国

巴基斯坦

丹麦

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

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

listpickercountries.selectedindex = 2;

有什么办法可以从后面的代码中找到巴基斯坦的索引并设置这个列表选择器的这个 selectedietm Like This Way

listpickercountries.selectedindex.Contain("Pakistan"); 

或类似的东西 ???

4

3 回答 3

0

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

索引将是相同的。

于 2012-06-05T13:11:52.043 回答
0

我假设您的国家课程为,

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

然后你可以这样做,

listpickercountries.ItemsSource = countriesList;
listpickercountries.SelectedIndex = countriesList.IndexOf( countriesList.Where(country => country.name == "Pakistan").First());
于 2012-06-05T13:58:55.627 回答
0

我建议同时绑定 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");
        }
    }

}

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

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

// From ViewModel
this.SelectedCountry = this.Countries.FirstOrDefault(c => c.Name == "Pakistan");
于 2012-06-05T15:23:31.327 回答