我有一個項目,需要將一個字符串列表綁定到一個listpicker控件。綁定完成後(在Loaded或OnNavigatedTo事件中),listpicker會打開以顯示綁定項目,但某些項目會隨機丟失(全屏模式)。當列表選擇器開始關閉時,似乎會出現缺失的項目。不知道爲什麼會發生這種情況 - 它是一個列表選擇器錯誤還是我不正確地綁定?我正在使用2011年11月發佈的silverlight工具包。WP7 Listpicker不顯示所有項目
PS:這個問題似乎不使用少量物品時發生(說最多10個)
請使用下面的代碼來重現問題
首頁XAML 背後
<TextBlock Text="Time of Day" Grid.Row="0" Margin="12,0,0,0" Style="{StaticResource PhoneTextNormalStyle}" />
<toolkit:ListPicker x:Name="TimesOfDayList" Grid.Row="1" SelectionMode="Multiple" FullModeHeader="Time of Day"
ExpansionMode="FullScreenOnly" ItemsSource="{Binding TimesOfDay}"
Margin="12,0,12,12">
<toolkit:ListPicker.FullModeItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" Margin="24,0,0,0" Style="{StaticResource PhoneTextLargeStyle}" />
</DataTemplate>
</toolkit:ListPicker.FullModeItemTemplate>
</toolkit:ListPicker>
</Grid>
主頁代碼
private MainPageViewModel _viewModel;
public MainPage()
{
InitializeComponent();
Loaded += MainPage_Loaded;
TimesOfDayList.SummaryForSelectedItemsDelegate = TimesOfDaySummary;
}
void MainPage_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
_viewModel = new MainPageViewModel();
DataContext = _viewModel;
}
private string TimesOfDaySummary(IList items)
{
string itemNames = string.Empty;
if (items != null && items.Count > 0)
{
var itemsList = items.Cast<string>().AsQueryable();
foreach (var item in itemsList)
{
if (item != itemsList.Last())
itemNames += item + ", ";
else
itemNames += item;
}
}
return itemNames;
}
ViewModel類
public class MainPageViewModel : INotifyPropertyChanged
{
public MainPageViewModel()
{
TimesOfDay = new List<string>
{
"12:00 AM",
"12:30 AM",
"01:00 AM",
"01:30 AM",
"02:00 AM",
"02:30 AM",
"03:00 AM",
"03:30 AM",
"04:00 AM",
"04:30 AM",
"05:00 AM",
"05:30 AM",
"06:00 AM",
"06:30 AM",
"07:00 AM",
"07:30 AM",
"08:00 AM",
"08:30 AM",
"09:00 AM",
"09:30 AM",
"10:00 AM",
"10:30 AM",
"11:00 AM",
"11:30 AM",
"12:00 PM",
"12:30 PM",
"01:00 PM",
"01:30 PM",
"02:00 PM",
"02:30 PM",
"03:00 PM",
"03:30 PM",
"04:00 PM",
"04:30 PM",
"05:00 PM",
"05:30 PM",
"06:00 PM",
"06:30 PM",
"07:00 PM",
"07:30 PM",
"08:00 PM",
"08:30 PM",
"09:00 PM",
"09:30 PM",
"10:00 PM",
"10:30 PM",
"11:00 PM",
"11:30 PM"
};
}
private List<string> _timesOfDay;
public List<string> TimesOfDay
{
get { return _timesOfDay; }
set
{
if(_timesOfDay != value)
{
_timesOfDay = value;
OnPropertyChanged("TimesOfDay");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string property)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(property));
}
}
}
刪除樣式並沒有解決我的問題。你能重新檢查它對你有用嗎? – Girish 2012-04-17 11:06:20
哎呀..突然它不起作用。讓我看看這裏發生了什麼... – 2012-04-17 11:32:33
嗨,再次。我花了一些時間試圖弄清楚這裏發生了什麼,我真的很驚訝。沒有辦法解決它。我想這應該是一個錯誤,但不能相信目前沒有人遇到這個問題。 – 2012-04-17 11:50:35