Windows phone 8 如何添加计时器以更改ListPicker中选定项目的图像

Windows phone 8 如何添加计时器以更改ListPicker中选定项目的图像,windows-phone-8,windows-phone-8.1,Windows Phone 8,Windows Phone 8.1,添加计时器以更改listpicker中选定项目的图像的步骤是什么。有什么建议吗?仅供参考,以前从未使用过ListPicker。所以我发现很难理解从哪里开始,做什么 您将需要一个可观察的图像源集合和一个调度员,以便在您选择的每个时间间隔触发事件 这里有一些代码可以帮助您开始。您可以修改它,使其完全符合您的要求。它基本上包含一个ListPicker,该ListPicker将一组图像作为其ItemTemplate。DispatchTimer每隔一秒钟触发selectedItem的映像,并在每个WP8.

添加计时器以更改listpicker中选定项目的图像的步骤是什么。有什么建议吗?仅供参考,以前从未使用过ListPicker。所以我发现很难理解从哪里开始,做什么

您将需要一个可观察的图像源集合和一个调度员,以便在您选择的每个时间间隔触发事件

这里有一些代码可以帮助您开始。您可以修改它,使其完全符合您的要求。它基本上包含一个ListPicker,该ListPicker将一组图像作为其ItemTemplate。DispatchTimer每隔一秒钟触发selectedItem的映像,并在每个WP8.0应用程序中创建的两个默认映像之间切换

养成使用ObervableCollection的习惯当您想向用户显示某些内容而不是列表时,它将使您的WP8开发工作变得更加轻松


XAML



C#名称空间

使用System.ComponentModel;//可观测收集
使用System.Collections.ObjectModel;//InotifyProperty已更改
使用System.Windows.Threading;//调度计时器

图像的C#模型(非常基本,但请注意INotifyPropertyChanged)

公共类MyBindingImage:INotifyPropertyChanged
{
公共MyBindingImage(){}
公共MyBindingImage(字符串源)
{
this.ImageSource=源;
}
//创建OnPropertyChanged方法以引发事件
公共事件属性更改事件处理程序属性更改;
受保护的void OnPropertyChanged(字符串名称)
{
PropertyChangedEventHandler处理程序=PropertyChanged;
if(处理程序!=null)
{
处理程序(此,新PropertyChangedEventArgs(名称));
}
}
字符串图像源;
公共字符串图像源{
获取{return image_source;}
设置
{
图像\源=值;
OnPropertyChanged(“ImageSource”);
}
}
}

C#(创建计时器和ObservableCollection并设置ItemSource)

调度计时器;
//建造师
公共主页()
{
//创建我们的调度计时器
计时器=新调度程序();
timer.Interval=TimeSpan.From毫秒(2000);
timer.Tick+=OnTimerTick;
初始化组件();
//创建我们的列表选择器元素
ObservableCollection my_image_list=新建ObservableCollection();
添加(新的MyBindingImage(“Assets/applicationion.png”);
添加(新的MyBindingImage(“Assets/AlignmentGrid.png”);
my_listpicker.ItemsSource=my_image_列表;
}

C#事件(用于计时器和列表选择器选择更改)

//每次更改选择时:停止计时器,然后重新启动
private void my_listpicker_SelectionChanged_1(对象发送者,SelectionChangedEventArgs e)
{
如果(计时器!=null)
{
timer.Stop();
timer.Start();
}
}
//如果计时器打开,则循环选定项目的图像
私有void OnTimerTick(对象发送方,事件参数e)
{
尝试
{
MyBindingImage项=(MyBindingImage)my_listpicker.SelectedItem;
//在不同的图像之间循环选定的图像
如果(item.ImageSource==“Assets/AlignmentGrid.png”)
{
item.ImageSource=“Assets/applicationion.png”;
}
其他的
{
item.ImageSource=“Assets/AlignmentGrid.png”;
}
}
捕获(例外情况除外)
{
字符串错误\u message=ex.message;
}            
}

[应用程序截图]


你能更详细地描述一下你想要实现的目标吗?如果你只是在ListPicker.ItemSource中获得了一个图像列表,你唯一要做的就是确保它是一个ObservableCollection而不是一个列表,你可以附加一个DispatchTimer和一些代码来更改集合,它将更新ListPicker。是的列表itemsource的图像,但它们的外观需要用计时器控制。非常感谢它的帮助。有一件事我不明白,为什么你把listpicket放在另一个listpicket中?我的错误。剪切和粘贴代码。我会解决的。:D