我的页面中有silverlight listpicker控件,并且绑定了List<Countries>
让我们说
美国
英国
巴基斯坦
丹麦
我将此列表与我的listpickercountries绑定我想要默认选择的值将是巴基斯坦
我可以用这种方式设置所选项目
listpickercountries.selectedindex = 2;
有什么方法可以找到巴基斯坦的索引从代码背后并设置这个listmat的像这样的选择
listpickercountries.selectedindex.Contain("Pakistan");
或类似的东西???
答案 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");