• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    TENCOKACISTROMYProgramovani v C#, F# a dalsich jazycich pro .NET, Mono a ostatni CLI implementace
    NECROMAN
    NECROMAN --- ---
    SLUPKA: tak jsem to myslel, dik
    BAT
    BAT --- ---
    SLUPKA: Aha, asi jsem nepochopil proces fungovani bindovani.

    Jestli to chapu spravne, tak v te "ceste" definujici vazbu smi byt pouze properties?
    Tzn. Address, na kterou chci bindovat, sice je property (Server.Address je property),
    ale nepujde to kvuli tomu, ze jeji parent (Server) neni property (Settings.Instance.Server je field).

    Myslel jsem, ze je dulezity jen to, aby byl property cilovy element na ktery binduju, ale ze uz nezalezi pres co vsechno se k nemu dostavam.
    SLUPKA
    SLUPKA --- ---
    BAT: Skutečná properta znamená property, nikoliv field.

    Field vypadá např. takto:
    public int i;

    Property např. takto:
    public int I { get; set; }

    A na bindování musíš bindovat na property nikoliv na fieldy
    BAT
    BAT --- ---
    NECROMAN: o vyvolani udalosti PropertyChanged je postarano.
    V setteru hodnoty Address se ta udalost vyvolava. Cely kod jsem sem nedaval aby to nebylo zbytecne dlouhy
    (a taky proto, ze nevim jak to sem pastnout bez nutnosti to cele jeste rucne formatovat a menit ruzne znaky na htmlentity, atp.).

    Co myslis tim "skutecna Properta" ?
    Jaky je v tomto ohledu (pouziti pri bindovani) rozdil mezi class Trida { public int cislo = 10; } a mezi class Trida { public Cislo Trida2 = new Cislo(); Trida2.cislo = 10; } ?

    Zeptam se jinak:
    Je problem ve zpusobu zapisu te vazbu v XAML?
    Tzn. je spatne {x:Static local:Settings.Instance}, Path=Server.Address} ?
    On uz se neumi dostat na .Address, pac tak daleko chodit neumi, nebo se to musi napsat jinak?

    (jestli se ptam nejak hloupe, tak se omlouvam, a prosim o trpelivost.)
    NECROMAN
    NECROMAN --- ---
    BAT: ono to jde, ale kazda z tech propert musi byt skutecna Properta, takze v pripade promenne
    public ServerSettings Server = new ServerSettings();
    to nepujde
    A stejne tak pokud to ma reagovat na zmenu, tak je nutne na kazdem clanku toho volani volat PropertyChanged
    BAT
    BAT --- ---
    Da se v XAML nabindovat jako zdroj parametr nejake tridy, kterazto je pristupna zase jako parametr jine tridy?
    ...asi se nevyjadruju moc jasne - priklad:
        public class ServerSettings : INotifyPropertyChanged {
            public string Address;
        }
    
        public sealed class Settings {
            public ServerSettings Server = new ServerSettings();
        }
    
    ...no a ja tedka chci nabindovat zdroj Settings.Instance.Server.Address.
    Zkousel jsem to bez uspechu vselijak, napr. takhle:
        <TextBlock Text="{Binding Source={x:Static local:Settings.Instance}, Path=Server.Address}" />
    Nicmene at se s hodnotou Address deje cokoliv, textblock je stale prazdny.
    Pokud to nabinduju pres ObjectDataProvider ktery vola metodu vracejici hodnotu Settings.Instance.Server.Address, tak to funguje.

    Mam blbe specifikovanou tu vazbu?
    ...napr. kdyz jsem jen Path=Server.Address nahradil volanim metody Path=VratAdresu, tak to funguje, takze asi je potreba to zapsat nejak jinak.

    (btw. nechce se mi jit cestou desitek ODP, technicky vzato je to asi totez, ale radsi bych tech 20+ radek kodu nenapsal).
    Znate prosim reseni?
    MORMEGIL
    MORMEGIL --- ---
    NECROMAN: E? To jsou dvě různé věci vždycky, String.Format používá composite format string, tzn. „{0:format}“, Int64.ToString() používá jen ten formát. Ale:
    x.ToString("D4");
    String.Format("{0:D4}", x);
    je snad totéž, ne?
    NECROMAN
    NECROMAN --- ---
    hmm, koukam, ze kdyz mam cislo long l, tak toto jsou 2 ruzne veci:
    l.ToString(format) a string.Format(format, l)
    BAT
    BAT --- ---
    Prosim vas pomozte mi nekdo, jsem z toho na mrtvici:

    MS Visual C# 2010 Express
    TreeView ma nabindovanou ObservableCollection a pouziva DataTemplate.
    Jak se dostanu na jednotlive TreeViewItems?
    Samozrejme jednotlivy polozky muzu snadno priadavat/menit/mazat provadenim pozadovanych uprav na patricne kolekci, ale napr...
    ...jak oznacim urcitou polozku? (TreeView.Items[3].IsSelected=true)
    ...jak sbalim urcitou vetev stromu?

    Asi by to slo pres pridane parametry "selected" a "expanded" v kolekci, ktere bych taky nabindoval na jejich ekvivalenty v ItemContainerStyle, ale proboha nejde tohle delat nejak normalne???
    Uz se s tim potykam celej den, Google uz ze mne musi bejt taky na nervy.

    Prece nejni mozny, ze clovek musi vytvaret takovy strasny konstrukce, jen aby dosahl tak jednoduchych a beznych veci?
    Co mi unika?
    3MARIE
    3MARIE --- ---
    tak me napadlo, proc by vlastne ta DLL nemohla mit ty Forms primo v sobe a ono to funguje ;-)
    3MARIE
    3MARIE --- ---
    TENCOKACISTROMY: ok. podivam se na to. diky.
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    3MARIE: To ale zadnym nareferencovanim DLL nezaridis. To potrebujes meziprocesovou komunikaci.
    Inter-process communication - Wikipedia, the free encyclopedia
    http://en.wikipedia.org/wiki/Inter-process_communication
    Interprocess Communications (Windows)
    http://msdn.microsoft.com/en-us/library/aa365574%28v=vs.85%29.aspx
    3MARIE
    3MARIE --- ---
    TENCOKACISTROMY: takze potrebuju vyresit jak se nejakou dalsi .NET aplikaci pripojit na ten bezici process, tedy funkce v te DLL aktivni pod procesem, ktery ji spustil.
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    3MARIE: Ne. Kdyz si nareferencujes tu DLL, tak se loaduje do procesu toho, kdo ji pouziva.
    3MARIE
    3MARIE --- ---
    TENCOKACISTROMY: jo. kdyz to DLL zaregistruju pres regasm, tak to DLL nejspis spousti system ne ? takze se z te .NET aplikace chci napojit na tu stejnou DLL.
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    3MARIE: Cili se chces pripojit na jiz spustenej proces?
    3MARIE
    3MARIE --- ---
    TENCOKACISTROMY: delphi chci nainterfacovat na to DLL a z toho DLL potom chci posilat informace do .NET forms aplikace
    TENCOKACISTROMY
    TENCOKACISTROMY --- ---
    3MARIE: Pockej a ty chces jen vyuzivat tu .NETovou assembly a nebo chces komunikovat mezi dvema bezicimi procesy?
    3MARIE
    3MARIE --- ---
    jeste me napadlo ze bych mezi tim DLL a Forms udelal taky COM link, ale v NET by to melo snad jit najak primo ne ?
    3MARIE
    3MARIE --- ---
    JACHYMKO: tak ten interface Delphi / .NET (exe) nejde z nejakyho duvodu rozchodit. Ale DLL Delphi zareferencujou v pohode. Takze bych to chtel udelat tak, ze Delphi komunikujou pres COM s DLL a DLL potom pres .NET s Forms applikaci (exe). Ted akorat nevim, jak propojit to DLL s Forms. Kdyz zareferencuju to DLL v Delphi i v .NET klientovi, tak vytvarim jeho instance, takze tudiz mi to do ty forms aplikace neproleze. Diky za radu.
    Kliknutím sem můžete změnit nastavení reklam