• ú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
    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.
    BAT
    BAT --- ---
    BAT: Tak jsem to prozatim prasacky vyresil takhle...

    Menu itemy vypadaji takto:
      <item Name="Polozka 1" ItemID="ITM1">
    DataTemplate pro menu itemy upraven takto:
      <MenuItem Header="{Binding XPath=@Name}" DisplayMemberPath="{Binding XPath=@ItemID}" Click="gsoTree_ContextMenu_Click">
    ...do DisplayMemberPath se ulozi retezec, podle ktereho potom uvnitr gsoTree_ContextMenu_Click poznam na kterou polozku menu se kliklo,
    a podle toho uz se muze provest patricna akce.
    DisplayMemberPath jsem nevybral nahodou, je to jedinej atribut menuitem do ktereho slo v datatemplate neco ulozit a pak to zase jinde ziskat.
    Sice je to pouzitelne, ale pripada mi to jako prasecina, a taky netusim jestli si timhle v budoucnu nenabehnu do nejakyho problemu.
    Takze pokud nekdo vite jak by to melo byt spravne, tak prosim poradte.
    BAT
    BAT --- ---
    Tak jsem to nakonec predelal pro WPF, a mam zas novej problem.

    Mam soubor "menu.xml" obsahujici definice ruznych menu, napr.:
      <Menus xmlns="">
        <Menu id="gsoTreeContextMenu">
          <item Name="Polozka 1"/>
          <item Name="Polozka 2"/>
        </Menu>
        ...
      </Menus>
    
    ...ktere takhle nabinduju:
      <XmlDataProvider x:Key="gsoMenuProvider" XPath="//Menus/Menu[@id='gsoTreeContextMenu']/*" Source="Resources\menus.xml" />
      ...
      <TreeView.ContextMenu>
        <ContextMenu>
          <ContextMenu.ItemsSource>
            <Binding Source="{StaticResource gsoMenuProvider}" XPath="//Menus/Menu[@id='gsoTreeContextMenu']/*" />
          </ContextMenu.ItemsSource>
        </ContextMenu>
      </TreeView.ContextMenu>
    
    No a ted bych do toho chtel dostat zpracovani udalosti kdyz se na urcitou polozku klikne.
    Predstavoval bych si to jako Hurvinek valku asi nejak takhle:
          <item Name="Polozka 1" Command="gsoTree_EditNode"/>
          <item Name="Polozka 2" Command="gsoTree_DeleteNode"/>
    
    Doufam, ze rozumite o co mi jde. Da se to nejak udelat?
    BAT
    BAT --- ---
    TENCOKACISTROMY: Ja se ty multiline nody puvodne snazil udelat podobnym zpusobem, ale porad bylo neco spatne (vetsinou dochazelo k tomu, ze se z neznameho duvodu text nody rozlozil do 3 radek) a obdelnik vyberu byl vuci "bounding boxu" nody posunuty do leva o -3px a dalsi drobne opticke vady... (ktere by asi sly vyresit, ale za ten cas by to asi nestalo)
    Rozhodne diky za pomoc, ale asi rovnou prejdu na WPF jak radi JACHYMKO.
    Obema moc dekuju, usetrili jste mi buh vi kolik hodin badani a googleni a pokusovani.
    Kliknutím sem můžete změnit nastavení reklam