【问题标题】:Refresh Button UWP刷新按钮 UWP
【发布时间】:2019-10-25 22:51:02
【问题描述】:

我想为我的应用添加一个刷新按钮,这样我就不必总是退出应用来清除数据。

我尝试了RefreshRequested,但我无法成功。

C#代码:

private void RefreshButtonClick(object sender, RoutedEventArgs e)
    {
        RefreshContainer.requestRefresh();
    } 

 <RefreshContainer>

<Grid HorizontalAlignment="Center" VerticalAlignment="Center" Width="910" Height="383" Margin="0,0,0,0">

<RelativePanel 
HorizontalAlignment="Center" BorderBrush="DarkOliveGreen" BorderThickness="8" Background="FloralWhite" Height="356" VerticalAlignment="Center" Width="871" Margin="0,0,0,0" Visibility="Visible" RequestedTheme="Default">

<AppBarButton x:Name="RefreshButton" Click="RefreshButtonClick"
                      Icon="Refresh" Label="Refresh" HorizontalAlignment="Left" Margin="155,178,0,0" VerticalAlignment="Top"/>

<TextBlock x:Name="timerLabel"  HorizontalAlignment="Left" Text="00:00:00" TextWrapping="Wrap" VerticalAlignment="Top"  FontSize="72" FontWeight="Normal"   TextAlignment="Center" Width="328" Margin="272,90,0,0"/>

 <Button Name="startButton" Background="MediumSeaGreen" Foreground="White" Content="Start" HorizontalAlignment="Left" Click="Button_Click_Start"  VerticalAlignment="Top" Margin="311,219,0,0"/>

<Button Name="stopButton" Background="MediumSeaGreen" Foreground="White" Content="Pause" HorizontalAlignment="Left" Click="Button_Click_Pause" VerticalAlignment="Top" Margin="398,219,0,0" RenderTransformOrigin="1.373,0.57"/>

 <Button Name="resetButton"  Background="MediumSeaGreen" Foreground="White" Content="Reset" HorizontalAlignment="Left" Click="Button_Click_Reset" VerticalAlignment="Top" Margin="498,219,0,0" RenderTransformOrigin="1.373,0.57"/>

<Button Name="restButton" Content="Parametres" HorizontalAlignment="Left" Click="Button_Click_Rest" VerticalAlignment="Top" Margin="698,192,0,0" RenderTransformOrigin="1.373,0.57"/>

<TextBlock Name="Round" Text="Nombre Round" HorizontalAlignment="Left" Height="20" Margin="382,70,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="140" TextDecorations="Underline"/>

        </RelativePanel>

 </Grid>

    </RefreshContainer>

我希望应用数据刷新

【问题讨论】:

  • 请查看来自 MSDN docs.microsoft.com/en-us/windows/uwp/design/… 的以下示例,您需要设置数据绑定才能完成这项工作,外加数据模板。这也确实很复杂。另一种解决方案是设置数据绑定并刷新支持对象
  • 感谢您的回答,我已经看到了这种拉动刷新的解决方案,但我正在寻找一个刷新按钮,您可以在其中单击它并刷新您的页面。我试图调整拉动以刷新按钮,但无法

标签: c# xaml uwp refresh


【解决方案1】:

Tomas,我知道你现在已经放弃了刷新按钮,但我想跟进,以防你以后重新访问,或者其他人将来遇到这个问题。

为了刷新数据,您需要对此进行编码。 “要在需要时获取新鲜内容,请处理 RefreshRequested 事件。在事件处理程序中,您需要特定于您的应用程序的代码来获取新鲜内容。” https://docs.microsoft.com/en-us/windows/uwp/design/controls-and-patterns/pull-to-refresh#handle-a-refresh-request。那里的文档中也有一个示例。

您通常会为此使用数据绑定,并且 RefreshRequested 事件需要编辑绑定的对象。

using (var RefreshCompletionDeferral = args.GetDeferral())
{
     await FetchAndInsertItemsAsync(3);
}

在示例中,您会注意到 FetchAndInsertItemsAsync 正在将新项目插入到支持集合中。

这里有更多关于数据绑定的信息:https://docs.microsoft.com/en-us/windows/uwp/data-binding/data-binding-quickstart

【讨论】:

    【解决方案2】:

    刷新按钮 UWP

    我测试了您的代码,问题是您没有将可滚动控件设置为 RefreshContainer 的内容。根据@Stuart Smith提供的文档,可以实现刷新功能,在此之前需要将上面的Grid内容放到ScrollViewer下。

    Xaml

    <RefreshContainer Name="MyRefreshContainer" RefreshRequested="MyRefreshContainer_RefreshRequested">
        <ScrollViewer>
            <Grid HorizontalAlignment="Center" VerticalAlignment="Center" Width="910" Height="383" Margin="0,0,0,0">
                <RelativePanel
               HorizontalAlignment="Center" BorderBrush="DarkOliveGreen" BorderThickness="8" Background="FloralWhite" Height="356" VerticalAlignment="Center" Width="871" Margin="0,0,0,0" Visibility="Visible" RequestedTheme="Default">
    
                    <AppBarButton x:Name="RefreshButton" Click="RefreshButtonClick"
                  Icon="Refresh" Label="Refresh" HorizontalAlignment="Left" Margin="155,178,0,0" VerticalAlignment="Top"/>
    
                    <TextBlock x:Name="timerLabel"  HorizontalAlignment="Left" Text="00:00:00" TextWrapping="Wrap" VerticalAlignment="Top"  FontSize="72" FontWeight="Normal"   TextAlignment="Center" Width="328" Margin="272,90,0,0"/>
    
                    <Button Name="startButton" Background="MediumSeaGreen" Foreground="White" Content="Start" HorizontalAlignment="Left"   VerticalAlignment="Top" Margin="311,219,0,0"/>
    
                    <Button Name="stopButton" Background="MediumSeaGreen" Foreground="White" Content="Pause" HorizontalAlignment="Left"  VerticalAlignment="Top" Margin="398,219,0,0" RenderTransformOrigin="1.373,0.57"/>
    
                    <Button Name="resetButton"  Background="MediumSeaGreen" Foreground="White" Content="Reset" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="498,219,0,0" RenderTransformOrigin="1.373,0.57"/>
    
                    <Button Name="restButton" Content="Parametres" HorizontalAlignment="Left"  VerticalAlignment="Top" Margin="698,192,0,0" RenderTransformOrigin="1.373,0.57"/>
    
                    <TextBlock Name="Round" Text="Nombre Round" HorizontalAlignment="Left" Height="20" Margin="382,70,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="140" TextDecorations="Underline"/>
    
                </RelativePanel>
    
            </Grid>
        </ScrollViewer>
    </RefreshContainer>
    

    背后的代码

    private void RefreshButtonClick(object sender, RoutedEventArgs e)
    {
        MyRefreshContainer.RequestRefresh();
    }
    
    private async void MyRefreshContainer_RefreshRequested(RefreshContainer sender, RefreshRequestedEventArgs args)
    {
        using (var RefreshCompletionDeferral = args.GetDeferral())
        {
            // Do some async operation to refresh the content
    
    
    
    
            RefreshCompletionDeferral.Complete();
            RefreshCompletionDeferral.Dispose();
        }
    }
    

    【讨论】:

    • 非常感谢!作为一个绝对的编程初学者,我不知道使用什么 await 方法才能使刷新工作..你能帮我多一点吗?
    • 我用过这个:await ApplicationData.Current.ClearAsync();但我收到此错误:System.IO.DirectoryNotFoundException
    • @Tomas 我测试了在MyRefreshContainer_RefreshRequested 事件处理程序中调用await ApplicationData.Current.ClearAsync();,它运行良好。可以分享一个空白的复制样本吗?
    • 异步编程请参考document
    • 我尝试了您的解决方案,但是当我按刷新时没有任何反应。我正在寻找可以真正刷新数据的东西,如果我无法刷新,甚至重新启动应用程序
    猜你喜欢
    • 2018-06-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2013-04-03
    • 2015-12-20
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多