Обновить кнопку UWP - PullRequest
       13

Обновить кнопку UWP

1 голос
/ 11 июня 2019

Я хочу добавить кнопку обновления в свое приложение, чтобы мне не всегда приходилось выходить из приложения, чтобы очистить данные.

Я пробовал 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>

Я ожидаю, что данные приложения обновятся

Ответы [ 2 ]

0 голосов
/ 18 июля 2019

Томас, я вижу, что вы отказались от кнопки обновления на данный момент, но я хотел бы продолжить, если вы вернетесь к ней позже или другие столкнутся с этой проблемой в будущем.

Чтобы данные обновились, вам нужно кодировать это. «Чтобы получить свежий контент, когда это необходимо, обработайте событие 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

0 голосов
/ 12 июня 2019

Кнопка обновления 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();
    }
}
...