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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[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

1
2
3
4
5
6
7
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

1
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

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