none
[Azure, MobileServiceCollection] Update une liste RRS feed

  • Discussion générale

  • Bonjour, 

    Je possède une liste items composée d'objet Jokes :

    private MobileServiceCollection<Jokes, Jokes> items;

    ...

    public class Jokes
    {
        public int Id { get; set; }

        [JsonProperty(PropertyName = "Content_Jokes")]
        public string Content_Jokes { get; set; }

        [JsonProperty(PropertyName = "Rates_Jokes")]
        public int Rates_Jokes { get; set; }
    }

    Qui est liée à ma vue :

    private async void RefreshJokesItems()
    {
        try
        {
            items = await jokesTable.ToCollectionAsync();
        }
        catch (MobileServiceInvalidOperationException e)
        {
            MessageBox.Show(e.Message, "Error loading items", MessageBoxButton.OK);
        }
    
        ListItemsRecent.ItemsSource = items;
    }


    Mon problème est que quand je souhaite modifer un objet de cette liste, la vue ne se met pas à jour :

    private void ButtonRateMore_Click(object sender, RoutedEventArgs e)
    {
        Button btn = (Button)sender;
        Jokes item = btn.DataContext as Jokes;
        item.Rates_Jokes++;
        UpdateJokesTable(item);
    }
    
    private async void UpdateJokesTable(Jokes item)
    {
        await jokesTable.UpdateAsync(item);
    }

    J'ai essayé des méthodes de supprimer l'objet pour le réinsérer, mais rien ne marche. Je ne vois pas de solution comment faire, j'ai essayé d'implémenter l'interface INotifyPropertyChanged sur ma classe Jokes, mais ça fait planter le programme. Auriez vous une solution ?

    Voici mon code XAML de la vue :

    <phone:LongListSelector Name="ListItemsRecent" Margin="0,-36,0,0" ItemsSource="{Binding items}">
        <phone:LongListSelector.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Vertical" Background="#EEF2F5">
                    <Line X1="0" Y1="0" X2="1" Y2="0" Stretch="Fill" Stroke="#dbdbdc" StrokeThickness="1" />
                    <TextBlock Name="TextBlockJoke" Text="{Binding Content_Jokes, Mode=TwoWay}" Foreground="Black" FontSize="24" Margin="5,10,0,0"/>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="*"/>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Column="0" Name="TextBlockRate" Text="{Binding Rates_Jokes, Mode=TwoWay}" Margin="5,10,20,10" Foreground="#94979a"/>
                        <TextBlock Grid.Column="1" Text="Auteur" Margin="5,10,5,10" Foreground="#94979a"/>
                        <Button Grid.Column="2" Click="ButtonRateMore_Click" HorizontalAlignment="Right" BorderThickness="0">
                            <Button.Content>
                                <Image Source="/Assets/main_1.png" Width="25" Height="24"/>
                            </Button.Content>
                        </Button>
                        <Button Grid.Column="3" Click="ButtonRateLess_Click" HorizontalAlignment="Right" BorderThickness="0">
                            <Button.Content>
                                <Image Source="/Assets/main_2.png" Width="25" Height="24"/>
                            </Button.Content>
                        </Button>
                    </Grid>
                </StackPanel>
            </DataTemplate>
        </phone:LongListSelector.ItemTemplate>
    </phone:LongListSelector>

    • Type modifié Aurel Bera mardi 13 août 2013 10:18 Discussion
    mardi 6 août 2013 13:57

Toutes les réponses