Update binding po přidání nového prvku   otázka

C#, Silverlight

Ahoj,

prosím Vás, mám v podstatě jednoduchý dotaz.

Píšu aplikaci (v C#) pro WP7 a ukládám si data do IsolatedStorage, mám vytvořenou tabulku s "tasky" a skupinymi tasků. V podstatě jde o rozšíření http://msdn.microsoft.com/en-us/library/... takové, že misto napevno definovaných skupin úkolů chci přidávat a odepírat různé skupiny a při výpisu skupin chci vidět, kolik tasků obsahují.

Teď k problému: když se podívám na přehled skupin, tak mám skupinu "All" s 2 tasky. Teď do té skupiny přidám nový task a podívám se opět na přehled, tak stále vidím, že obsahuje 2. Vždy musím aplikaci vypnout a znovu zapnout, aby se provedlo nové bindování.

Jako mám aplikaci říst, aby provedla nový binding dat?

Díky moc za pomoc. :)

Kryštof

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tipl bych,že bude problém v tom,že datový zdroj pro ViewModel se plní v App.xaml,tedy při startu aplikace.Dle mého by stačilo tuto fci přesunout do vlastní třídy(například).Prostě tak,aby se obnovil i datový zdroj.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ahoj,

zkusil jsem to, ale bohužel bez výsledku. Zkoušel jsem stopovat co se v aplikaci děje a zdá se mi, že problém je někde jinde - nenapadá mě jiné označení než v relaci mezi tabulkami.

Když vytvářím task, tak každý task má property Group

        [Column]
        internal int _groupId;

        private EntityRef<Group> _group;

        [Association(Storage="_group",ThisKey="_groupId",OtherKey="Id",IsForeignKey=true)]
        public Group Group
        {
            get
            {
                return _group.Entity;
            }
            set
            {
                NotifyPropertyChanging("Group");
                _group.Entity = value;
                if (value != null)
                {
                    _groupId = value.Id;
                }
                NotifyPropertyChanged("Group");
            }
        }

a ten nastavuji z listboxu. Když zapisuji task do databaze, tak to provádím ve ViewModel pomocí metody AddTask

        public void AddWord(Task t)
        {
            dataContext.Tasks.InsertOnSubmit(t);
            dataContext.SubmitChanges();
            //SaveChangesToDatabse();
            AllTasks.Add(word);
        }

dataContext proměnný třídy MyDataContext, která má veřejnou proměnou Groups

        public Table<Group> Groups;

A když se pokoušim provést nové získání dat ve ViewModelu z databáze, tak Tasky získám všechny, včetně nově přidaného, ale Groups získá staré záznamy - prostě neví, že se něco změnilo - že existuje nový prvek se kterým má relaci... Zkoušel jsem manuálně volat NotifyPropertyChanged("AllGroups") nebo změnit jméno (změna se provedel, ale počet prvků v relaci se nezmění). Nenapadá Vás prosím něco?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A implementuje třída definující Groupy rozhraní INOtifyPropertyChanged(je jedno jestli přímo nebo přes abstraktní třídu)?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback