gpt4 book ai didi

c# - Windows 8自动翻转图片

转载 作者:太空狗 更新时间:2023-10-30 00:33:00 27 4
gpt4 key购买 nike

我有一个翻转 View ,我希望它每 n 秒自动更改图像,而不让用户选择向右或向左单击。

最佳答案

使用 DispatcherTimer控制更改图像的时间间隔并设置 SelectedIndex FlipView上的属性(property)(按名称 - 如果您使用的是 MVVM,则在 View 模型上设置绑定(bind)到 SelectedIndex 的属性)。

编辑

这是一个使用文本 block 而不是图像的示例(FlipView 的项目中的内容与执行操作无关)。

MainPage.xaml

<Page
x:Class="App1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" FontSize="50" FontWeight="Bold">

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition />
</Grid.RowDefinitions>
<!-- Stick in a place to show what our interval between changing content is -->
<TextBlock x:Name="TimeDelta" Text="Waiting for first change..."/>
<FlipView x:Name="TheFlipView" SelectionChanged="DisplayedItemChanged" Grid.Row="1">
<!-- Statically add some items -->
<FlipView.Items>
<FlipViewItem>
<TextBlock Text="Item1" />
</FlipViewItem>
<FlipViewItem>
<TextBlock Text="Item2" />
</FlipViewItem>
<FlipViewItem>
<TextBlock Text="Item3" />
</FlipViewItem>
</FlipView.Items>
</FlipView>
</Grid>
</Page>

MainPage.xaml.cs

using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;

namespace App1
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage
{
//Make a place to store the timer
private readonly DispatcherTimer _timer;

//Make a place to store the last time the displayed item was set
private DateTime _lastChange;

public MainPage()
{
InitializeComponent();

//Configure the timer
_timer = new DispatcherTimer
{
//Set the interval between ticks (in this case 2 seconds to see it working)
Interval = TimeSpan.FromSeconds(2)
};

//Change what's displayed when the timer ticks
_timer.Tick += ChangeImage;
//Start the timer
_timer.Start();
}

/// <summary>
/// Changes the image when the timer ticks
/// </summary>
/// <param name="sender"></param>
/// <param name="o"></param>
private void ChangeImage(object sender, object o)
{
//Get the number of items in the flip view
var totalItems = TheFlipView.Items.Count;
//Figure out the new item's index (the current index plus one, if the next item would be out of range, go back to zero)
var newItemIndex = (TheFlipView.SelectedIndex + 1) % totalItems;
//Set the displayed item's index on the flip view
TheFlipView.SelectedIndex = newItemIndex;
}

/// <summary>
/// Invoked when this page is about to be displayed in a Frame.
/// </summary>
/// <param name="e">Event data that describes how this page was reached. The Parameter
/// property is typically used to configure the page.</param>
protected override void OnNavigatedTo(NavigationEventArgs e)
{
}

/// <summary>
/// When the user changes the item displayed manually, reset the timer so we don't advance at the remainder of the last interval
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DisplayedItemChanged(object sender, SelectionChangedEventArgs e)
{
//Show the time deltas...
var currentTime = DateTime.Now;

if (_lastChange != default(DateTime))
{
TimeDelta.Text = (currentTime - _lastChange).ToString();
}

_lastChange = currentTime;

//Since the page is configured before the timer is, check to make sure that we've actually got a timer
if (!ReferenceEquals(_timer, null))
{
_timer.Stop();
_timer.Start();
}
}
}
}

关于c# - Windows 8自动翻转图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14177037/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com