Laden...

Forenbeiträge von squadwuschel Ingesamt 406 Beiträge

24.10.2011 - 08:34 Uhr

Ich denke nicht das dir das Event viel bringt, wenn du die Controls dynamisch erstellst. Versuch es erstmal nur mit dem Autopostback = true ohne das Event und setzt deinen Haltepunkt ins Page_load Event.

Wenn du deinen Haltepunkt in das Event setzt, kann sein das dieses nicht aufgerufen wird, wenn du die Dropdownlosten dynamisch erstellst, aber dafür müsste ich genau wissen wann und wie du die Zeilen der Tabelle erstellst.

(Hat damit zu tun, wenn du Controls dynamisch erstellst und dies z.B. auch in einem Event wie z.B. dem Button Klick Event, dann wird das Control zu spät erstellt und dein Event wird niemanls bei .NET registriert und kann damit auch nie aufgerufen werden.)

mfg squadwuschel

23.10.2011 - 12:09 Uhr

Der Beitrag hat mir sehr geholfen und habe auch direkt eine kurze Anleitung erstellt, evtl. hilft einem diese weiter bei Bedarf:

postgre SQL Datenbank und Entity Framework

mfg squadwuschel

06.10.2011 - 08:56 Uhr

Moin,

um Daten vom SubProgramm in dein Hauptprogramm zu bekommen musst du keine Verweise im subprogramm für das Hauptprogramm unterbringen.

Du kannst z.B. im Subprogramm ein Event definieren, was geworfen wird wenn die Daten ermittelt wurde und hängst dich im Hauptprogramm an das Event, welches dann ja zum richtigen Zeitpunkt aufgerufen wird.

Oder Wenn du nur eine Liste mit Datenfüllst oder ein Objekt mit Daten füllst im Subprogramm, dann übergibst du das Objekt einfach bei deinem Aufruf mit und füllst es im Subprogramm und da es sich um ein Objekt handelt, ist es das gleiche im Haupt und Subprogramm. d.h. Die Daten die im Subprogramm eingetragen werden stehen dir dann auch im Hauptogramm zur Verfügung.

mfg squadwuschel

24.09.2011 - 22:30 Uhr

Hio,

verstehe dein Anliegen evtl. nicht richtig, wenn du auf ein Bild mittels Hyperlink klickst, dann wird doch das Bild aufgerufen und angezeigt oder?

Wenn ja dann lass das Bild doch Mittels ashx Handler anzeigen, in dem kannst du dann ganz einfach mitzählen wann welches Bild aufgrufen wurde und wie oft, das sollte auf jedenfall funktionieren.

Eine andere Möglichkeit, bei der ich mir aber nicht sicher bin ob das so funktioniert, ist mittels jquery das Click Event auf das Bild zu legen und dann per Ajax Call einfach an den Server senden das das Bild aufgerufen wurde der Link sollte evtl. weiterhin funktionieren oder muss mittels javascript ebenfalls ausgeführt werden.

mfg squadwuschel

05.09.2011 - 17:10 Uhr

hio,

danke erstmal. Jip ich nehme auch keine Strongly Types ActionLinks. zu den RouteURL dings konnte ich mich noch nicht durchringen alles umzustellen 😕

Was ich aber nicht verstehe wo der Spagatvorteil von Route Tables liegt, bei meinem Problem, denn damit blende ich ja auch keine Links auf der Oberfläche aus.

thx much squadwuschel.

05.09.2011 - 12:10 Uhr

Hio,

Ich habe viele Links die abhängig vom aktuellen User angezeigt werden sollen oder nicht (je nachdem welche Rechte dieser besitzt.)

Im html-code selbst will ich keine "If" Abfragen erstellen, daher meine Frage gibt es eine Möglichkeit das ganze auch ohne einen eigenen Helper zu realisieren mit Hilfe von Actionlink selbst oder muss ich meinen eigenen kleinen ActionLink Helper schreiben?

Oder gibt es hier in MVC noch andere Möglichkeiten das Problem zu lösen?

thx much squadwuschel

28.08.2011 - 21:08 Uhr

MVC 3 Läuft soweit ich weiß auch ohne das, dass MVC 3 Framwork installiert ist, dafür muß nur eine DDL mit im Projekt eingebunden werden, habe ich wo gelesen, aber Probiert noch nicht.

die Placeholder werden in ASP.NET meist verwendet wenn du Masterpages nimmst, ist zumindest der einzige Anwenungsfall für den ich die Nutze.

Damit man dir weiterhelfen kann wäre da schon etwas mehr Code notwendig. Ich würder erstmal versuchen das Control ganz normal auf einer Page oder in deinem anderen Control einzubinden auf ner ganz normalen ASP.NET Seite ohne ContentPlaceholder und co um erst einmal zu testen ob es auch so funktioniert und dann die Seite weiter ausbauen.

mfg squadwuschel

28.08.2011 - 09:20 Uhr

Hio,

ich hoffe ich habe das richtig verstanden soweit.

Ja man kann UserControls in UserControls verwenden, soweit ich weiß ^^.
aber ich würde es zum Beispiel direkt über die Oberfläche einbinden im ascx code. bzw. du kannst in deinem Codebehinde deines zweiten UserControls doch auch einfach wieder Public Properties anlegen und die kannst du von außen setzten von deinem MainControl auf die Properties des ChildControls zugreifen und z.B. IsVisible setzten oder halt deine eigenen Properties.

wenn du von deinem ChildControl auf das ParentControl zugreifen willst, geht das glaube ich mit Control.Find aber das habe ich lange nimmer gemacht und ist auch etwas complizierter da das immer nur eine Hierarchie durchsucht.

evtl. konnte ich dir weiterhelfen.

mfg squadwuschel

15.08.2011 - 21:43 Uhr

mit programm meinst du eine IIS webseite ?

15.08.2011 - 21:37 Uhr

Hio,

habe schon eine weile gesucht und rumprobiert aber komme zu keiner richtigen Lösung meines Problems.

Ich würde gerne einen Custom Modelbinder erstellen der für ein "IEnumerable<MyData>" gültig ist. Ich habe dafür diesen Typ einen eigenen Helper geschrieben der die Daten dementsprechen auf der Webseite anzeigt.

Wenn ich in der Global.asax den Binder auf das Model anwende in dem die Liste ist, wird mein Custom Modelbinder auch aufgerufen


ModelBinders.Binders.Add(typeof(EditUserAdminModel), new DynamicDataModelBinder())

wenn ich aber versuche direkt auf meinen Typen zu binden, funktioniert das ganze nicht mehr und der Custom Modelbinder wird nicht mehr aufgerufen.


ModelBinders.Binders.Add(typeof(IEnumerable<MyData>), new DynamicDataModelBinder());

Ich denke es liegt an der Art wie ich meine Liste im HTML Binde, denn er scheint nicht mit zu bekommen, das ich ein "IEnumerable<MyData>" Binde.

Ich habe nämlich mal probiert einen einfachen Datentyp "MyData" ohne IE.. zu mappen mit EditorFor(model=>model.myDatVar) und mit Editor(Model.myDatVar) und natürlich habe ich auch in der Global.asax das Binding angepasst.

Im ersten Falle hat er dann meinen Custom Binder aufgerufen im zweiten Falle nicht.

Daher, denke ich das evtl. meine Custom HTML Extension Methode die für das Darstellen der Daten da ist nicht "richtig" geschrieben bzw inistialisiert wird.


@Html.DynamicDataType().EditorFor(Model.DynamicData, EFDataModel.Enums.EFModules.Member)

Meine Helper Methode:
Hier greife ich dann wieder auf HtmlHelper zurück für Textbox und Display der Daten.


  public MvcHtmlString EditorFor(IEnumerable<EFDataModel.EFDynamicData> data, EFDataModel.Enums.EFModules module)
        {
            //Alle eingabefelder für das übergenenen Modul heraussuchen die auch angezeigt werden sollen           
            var fields = from eFields in CurrentHttpContext.GetDataModel().EFDynamicDataTypeMenge where eFields.ModuleId == (int)module && eFields.IsVisible select eFields;

            string completeTemplate = string.Empty;

            //Alle Eingabefelder für dieses Modul durchgehen und wenn für das jeweils passende Feld Daten hinterlegt wurden diese anzeigen.
            foreach (EFDataModel.EFDynamicDataType eDataType in fields)
            {
                //Heraussuchen ob für den aktuellen Datentyp Daten angezeigt werden sollen.
                EFDataModel.EFDynamicData currentData = data.Where(p => p.EFDynamicDataTypeID == eDataType.ID).FirstOrDefault();

                string htmlTemplate = App_GlobalResources.HtmlTemplates.EditorForDynamicDataTemplateRESX;
                string anzeigeLabel = CurrentHtmlHelper.Label(eDataType.Name).ToHtmlString();
                string inputControl = string.Empty;

                switch (eDataType.DynamicDataType)
                {
                    //TODO die restlichen Werte anzeigen lassen wie DateTime, ...
                    case EFDataModel.Enums.EFDynamicDataTypes.String:
                        inputControl = CurrentHtmlHelper.TextBox(eDataType.HtmlName, currentData != null ? currentData.GetValue() : string.Empty).ToHtmlString();
                        break;
                }

                completeTemplate += string.Format(htmlTemplate, anzeigeLabel, inputControl);

            }

            return MvcHtmlString.Create(completeTemplate);
        }

Mein CustomModelbinder:


  public class DynamicDataModelBinder : DefaultModelBinder
    {
        protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, System.ComponentModel.PropertyDescriptor propertyDescriptor)
        {
            //Wenn es sich um unsere Liste handelt, die gesetzt werden soll, dann diese extra behandeln
            if (propertyDescriptor.PropertyType == typeof(IEnumerable<EFDynamicData>))
            {
   ...

Ich wollte das ganze eigentlich ohne EditorTemplates versuchen machen, da der Typ im Enum auch wieder etwas komplexer ist, wenn es denn überhaupt damit geht, probiert habe ich das noch nicht bisher.

Ich hoffe ich habe alles soweit erläutert und mein Problem wird deutlich, wenn nicht bitte detailliert nachfragen was ich vergessen haben könnte.

thx much squadwuschel

10.08.2011 - 10:37 Uhr

oki dann werde ich das heute abend mal probieren so umzusetzten.

thx squadwuschel

10.08.2011 - 09:42 Uhr

Hio,

erstmal danke für die Antwort.

Leider hat eine Stadt desto größer sie wird auch mehrere Postleitzahlen und auch eine Straße könnte durch mehrere PLZs gehen.

Daher wollte ich um die Sache nicht "unnötig" kompliziert zu machen die PLZs einfach an die Stadt hängen, könnte man aber evtl. auch direkt an eine Adresse legen.

für die Relation: EFAdress-x----1-EFCity
gebe ich dir recht, macht sinn.

Aber wenn ich dich richtig verstehe würde ich ja eher die EFStreet an die EFAddress hängen, denn nur dann kann ich ja von der Straße auf die eingeutig hinterlegte Stadt gelangen und NICHT wie oben vorgeschlagen die EFCity an die EFAddress binden.

Ich weiß das man eigentlich keine Prefixe vor die Klassen setzt aber ich hatte z.b. die Klasse User die dann EFUser wurde, da ich sonst mit ASP.NET MVC und der User klasse dort für die Authentication durcheinander kam und nicht immer den kompletten namespace ausschreiben wollte.

thx squadwuschel

10.08.2011 - 08:35 Uhr

verwendetes Datenbanksystem: Entity Framework 4

Hio,

also ich stehe irgendwie auf dem Schlauch und hoffe das mir evtl. hier jmd einen Tipp für mein Problem geben kann.

Auf dem angehängten Bild seht Ihr erst einmal einen Teil meines EF Models. (Class First)

Ich habe ein EF Model was eine "Kontaktverwaltung" darstellen soll also zumindest einen Teil davon.

  1. Ich habe eine Person EFPerson der kann ich eine oder Mehrere Adressen zuordnen was man auf dem Model sieht.

  2. Ich habe eine Adressklasse EFAddress Klasse die meine Adresse dann darstellen soll, der eine Stadt, dann ZipCode und Street zugeordnet werden sollen. (Ist reduziertes Modell hier kann man noch Land, ... mit einbinden ist erstmal unrelevant für die Problematik)

  3. Ich denke dir Zuordnung zwischen EFAdress und EFCity ist falsch, denn der City sind ja mehrere Adressen zugeordnet und nicht nur eine aber einer Adresse ist immer nur eine Stadt zugeordnet.

Mir fehlt jetzt die Idee, wie man meinen EFAdress genau eine Adresse zuordnet, denn wie es auf dem Bild dargestellt wird, so funktioniert es nicht, dessen bin ich mir bewusst 😕.

Baut man hier noch einmal weitere Zuordnungen zwischen den einzelnen Klassen? Leider fehlt mir hier die zündende Idee.

Wenn eine genauere Erläuterung notwendig ist, dann bitte bescheid geben, dann versuche ich das ganze noch detaillierter zu erläutern.

thx much squadwuschel

07.08.2011 - 15:05 Uhr

Hio,

Danke für die ausführliche Antwort.

Fehler ist vielleicht falsch ausgedrückt wenn ich versuche

IOrderedEnumerable<Myclass> Test = New List<Myclass>();

Zu erstellen geht das schon nicht weil vs einen "Syntaxfehler" bringt, das der Typ nicht stimmt.

Habe das ursprüngliche Problem inzwischen umgehen können, so dass ich das oben genannte nicht mehr benötige, aber interessieren würde es mich schon warum es keinen Listentypen gibt mit dem ich das Interface initialisieren kann.

Tax much squadwuschel

06.08.2011 - 22:03 Uhr

Hio,

ein new List<T>() kann man leider nicht draus machen, da bringt er direkt einen Fehler.

hatte auf ein Pendant gehofft wies die List<T> für IEnumerable, damit ich der Auflistung dann auch was hinzufügen kann, muss ja gehen hoffe ich mal 😃

thx much squadwuschel

06.08.2011 - 21:33 Uhr

Hio,

bin gerade etwas "hilflos" und weiß nicht so genau wonach ich suchen soll.

Ich habe eine Variable die vom Typ IOrderedEnumerable ist die ich initialisieren möchte, aber nicht mit einer Liste die nen Key und nen Value hat wie die SortedList,

Sondern würde die gerne Initialisieren wie IEnumerable mit New List<T>(), einer einfachen Liste der ich dann wieder Werte hinzufügen kann, ist das möglich und wenn ja mit welcher Liste.

z.B.:

das geht: IEnumerable<string> test = new List<string>();
wie geht das: IOrderedEnumerable<string> = ?

thx much squadwuschel

25.07.2011 - 08:08 Uhr

danke dir für deine ausführliche Antwort, sehr nice.

thx squadwuschel

24.07.2011 - 19:20 Uhr

Hio,

Nein Route tables nutze ich nicht.

Ich nehme z.B. ActionLink und nehme dort für den controllernamen einen enum Value den ich zu toString umwandle damit ich keine reinen Strings verwenden muss, ausserdem habe ich für jeden Controller ein eigenes enum. Denn ich halte es für zu fehleranfällig einfache Strings zu verwenden und vor allem wenn sich etwas ändert ist das ganze weniger fehleranfällig.

Oder wie handhabst du das?

Thx squadwuschel

24.07.2011 - 15:49 Uhr

Sehr coole slides

Danke dir, sehr nice. Naja im Moment verwende ich enums mit toString() in meinen generierten Links um etwas Sicherheit zu haben wenn sich Linknamen ändern. Dann werde ich es mal dabei belassen 😃

Thx squadwuschel

24.07.2011 - 14:30 Uhr

Hio,

Danke für die Antworten 😃

Abt -> was meinst du mit dem direkten Zugriff auf definierte Routen in den RouteTables?

thx squadwuschel

24.07.2011 - 11:17 Uhr

Hallo,

Ich habe im Netz bereits danach gesucht bin aber nicht ganz schlau aus der Materie geworden,
denn ich möchte gern im view folgendes verwenden:

@(Html.ActionLink<ControllerName>(a=>a.Index(),"Login"))

Als View Engine nutze ich razor und ich dachte ab MVC 3 werden strongly typed Links nativ unterstützt, denn leider erkennt er bei mir die Syntax nicht an. Muss man hier noch ein Plugin installieren oder was übersehe ich hier genau?

Thx much
Squadwuschel

27.06.2011 - 16:29 Uhr

ah danke dir sehr interesante Informationen 😃

26.06.2011 - 16:48 Uhr

oki danke dir 😃

26.06.2011 - 12:38 Uhr

Hio,

bin noch etwas neu in ASP.NET mit MVC und konnte im Netzt nichts zu meinem Problem finden.

Ich will nicht nur Fehler als Feedback anzeigen können, sondern auch Positive Nachrichten wie "speichervorgang war erfolgreich", ....

Ich weiß das es das "Html.ValidationSummary" gibt auf der Webseite was man einbinden kann und ich weiß auch wie ich diesem einen Wert zuweise. Auch das ich per Css hier eine andere Farbe für die Schriftfarbe setzten kann z.b. Grün für ein Positives Feedback wenn der Speichervorgang richtig beendet wurde.

Aber wenn ich das Css setzte, dann kann ich hier entweder fehler oder positive nachrichten anzeigen lassen oder habe ich da was übersehen?

Meine Idee wäre jetzt gewesen, im Model noch ein Proberty einzubauen was ich setzten kann ob es sich um eine message oder einen Fehler handelt und dann per Inline code im HTML dort die passende Css Klasse zu setzten oder gibt es noch einen anderen Weg?

thx much squadwuschel

26.06.2011 - 12:24 Uhr

welchen Browser nimmst du zum debuggen?

02.05.2011 - 15:23 Uhr

so ich habe zwar noch nicht rausbekommen warum es so nicht direkt funktioniert, es scheint aber daran zu leigen das meine ObjectContext des EF aus der Session kommt und es hier Probleme gibt, daher lade ich meinen Objectcontext jetzt wie hier:

http://csharpquestions.com/entity-framework/scope-of-entity-framework-object-context-in-asp-net-websites

beschrieben und alles finktioniert wunderbar, da ich auf der gesamten webseite auf die selben Contexte zugreife.

evtl. kann mir ja doch wer sagen was ich an meiner ersten Version "falsch" gemacht habe, weil prinzipiell hätte es auch dort funktionieren müssen.

thx much
Squadwuschel

02.05.2011 - 14:14 Uhr

Hio,

also die User existieren alle schon ich suche die vorher nur über Linq ausdrücke aus der Db heraus und weißse diese zu.

Denn beim using mache ich nichts andere wie sonst auch nur das hier meine DB Objekt direkt erstellt und wieder disposed wird und im anderen Fall hole ich mein DB Objekt aus der session und es geht nicht mehr.

Das Problem schein hier denke ich eher mit ASP.Net zusammenzuhängen und Sessions, aber kann es noch nicht ganz nachvollziehen warum.

das habe ich gefunden im Netz evtl. hat das was damit zu tun:

http://stackoverflow.com/questions/2383966/entity-framework-object-context-in-asp-net-session-object

thx squadwuschel

02.05.2011 - 13:51 Uhr

Hio,

Ich versuche mich kurz zu fassen und hoffe das ich alle wichtigen Infos unterbringe, wenn nicht bitte nachfragen, dann erläutere ich das ganze Detaillierter.

Ich habe ein Klassenmodell in dem User und Project als Klasse exisitieren und die zwischen diesen beiden Klassen existieren 4 Verbindungen vom Project zum User.

Dazu gibt es immer nur Navigation Properties im Project:
Teamleader (Ein Projekt kann * Teamleiter haben und einem User können * Projekte zugeorndet werden -> ManyToMany Beziehung)
ExternalEmployees (siehe Temaleader)

Orginator (Ein Projekt kann einen Orginator haben und einem User können beliebig viele Projekte zugrwiesen werden OneToMany Beziehung)
Coordinator (siehe Orignator)

soweit eigentlich kein Problem.
Dann Nutze ich in meinen webprojetken meist eine Statische Sessionklasse um immer direkt auf die aktuelle Usersession zugreifen zu können.


 public static SWSession GetSWSession()
    {
        //Wenn das Session Objekt noch nicht existieren sollte, dann wird dies hier erstellt und der Session zugewiesen
        if (HttpContext.Current.Session[SessionName] == null)
        {
            HttpContext.Current.Session[SessionName] = new SWSession();
        }

        return (SWSession) HttpContext.Current.Session[SessionName];
    }

Und im der SWSession Klasse habe ich dann meinen DatAModelContainer vom EF Framework als Property hinterlegt und wird Initialisiert und greife darauf direkt zu um z.B. neue Projekte anzulegen


 public SWDataModelContainer SWDataModel { get; set; }

Vorher wird CurrentProject mit den entsprechenden Daten gefüllt wo ich auch wieder auf "SWSession.GetSWSession().SWDataModel" zurückgreife um z.b. beistimmte User zu laden mit Linq.


 SWSession.GetSWSession().SWDataModel.ProjectSet.AddObject(CurrentProject);
 SWSession.GetSWSession().SWDataModel.SaveChanges();

Hier kommt es dann beim Speichern zum Problem das er mir z.B. sagt:

"Entities in 'SWDataModelContainer.ProjectSet' participate in the 'UserProjectCoordinator' relationship. 0 related 'User' were found. 1 'User' is expected."

Wenn ich jetzt z.B. den Coordinator aus den Navigation Properties entferne und das ganze ohne diesen versuche geht es auch. -> das verstehe ich schonmal nicht warum oder weshalb hier der Fehler auftaucht.

Wenn ich jetzt meine Speicherroutine so abändere das ich auf meiner Seite ein eigenes SWDataModelContainer Objekt erstelle und speichere kann ich alles ganz normal speichern ohne einen Fehler. -> Würde ja aber gerne nur ein DataModelcontainer nutzen wollen den ich aus der Session hole oder ist das die falsche Herangehensweise?


using (EFDataModel.SWDataModelContainer dataModelContainer = new SWDataModelContainer(SWSession.GetConnectionString()))
{
...
          int employeeId = int.Parse(uxExternalEmployeeDDL.SelectedValue);
          var employee = from eUser in dataModelContainer.UserSet
                           where eUser.Id == employeeId
                           select eUser;
            CurrentProject.ExternalEmployees.Add(employee.First());

            //Den Coordinator hinterlegen
            CurrentProject.Originator = (User)coordinator.First(); 
            dataModelContainer.ProjectSet.AddObject(CurrentProject);
            dataModelContainer.SaveChanges();
}

Mache ich etwas falsch in der Nutzung des Containers des EF Frameworks oder habe ich da noch was falsch verstanden. Hoffe es wird ungefährt klar was ich meine sonst bitte einfach nachfragen.

thx much
squadwuschel

30.04.2011 - 10:41 Uhr

Hio,

Ich danke dir, darauf habe ich jetzt garnicht geachtet bzw. habe partial noch nie
genutzt bisher.

Weißt du evtl. wozu dann das POCO gut ist, habe zwar schon etwas drüber geselen aber kann mir da noch keinen Sinn zusammenreimen wann das zum Einsatz kommt.

thx squadwuschel

30.04.2011 - 10:03 Uhr

Hio,

bin im Moment noch recht neu im Entity Framework unterwegs und mir fehlt da im Moment noch etwas der Überblick. Also ich habe mir ein Klassenmodell gebaut z.B. PersonenKlasse und eine KategorieKlasse. (Eine PErson kann einer Kategorie zugeordnet werden) über den EF Editor im VS 2010.

Meine PersonenKlasse hat ja jetzt aber nur Properties, ist es möglich das ich der Klasse Person noch Funktionen zuordne wie CheckSpelling getFullName, ..... und diese mit Code fülle?

Habe bisher viel mit dem Schlagwort POCO gefunden, mit dem ich aber primär noch nicht soviel anfangen kann.

Hat evtl. jmd Hinweise für mich wonach ich mal suchen sollte oder einen Guten Artikel in dem die Problematik beschrieben ist oder geht sowas garnicht oder gibt es noch alternative Lösungen?

thx squadwuschel

verwendetes Datenbanksystem: SQL Server 2008

20.04.2011 - 08:17 Uhr

Hio,

bin in WPF noch nicht so lange unterwegs und stehe aktuell vor folgender Problemstellung.

Heutige Programme siehe z.B. Office haben eigentlich fast keine Popups mehr vieles wird direkt über "Reiter" erledigt. Das würde bei WPF ja bedeuten das ich nur noch eine MainWindow.xaml Datei habe oder? Diese würde ja quasi unendlich groß und unübersichtlich selbst mit MVVM.

Daher wollte ich mal anfragen welche Strategien es hier gibt evtl. kennt jmd ein paar gute Blogeinträge wie so etwas gehandhabt wird. Aufteilen der Oberfläche oder kann mir hier evtl. Ansatzpunkte nennen. Weiß leider nicht so recht wonach man hier bei Google suchen sollte.

thx much
SquadWuschel

19.04.2011 - 16:21 Uhr

Hio,

bin zwar in WPF noch nicht so lange unterwegs aber wenn du nur das aktuell ausgewählte Item wissen willst, dann solltest du die Liste die an dein TreeView geht als "ListCollectionView" definieren, da kannst du dann einfach das aktuell ausgewählte item mit "CurrentItem" herausfinden.

Wenn du auf das Event selbst reagieren willst dann würde ich dir folgendes vorschlagen mal durchzulesen:

http://webenliven-space.de/dotnetblog/post/2010/07/27/Das-MVVM-und-Events.aspx

mfg squadwuschel

28.01.2011 - 13:47 Uhr

danke dir erstmal, aber wann verwendet man dann DepencyProperties?

thx squadwuschel

28.01.2011 - 13:02 Uhr

Hallo,

ich habe zu meinem Problem zwar bereits eine Lösung gefunden im Netz aber wollte weiter recherchieren ob es sich dabei um eine Gute Lösung handelt.

Problemstellung:

Ich habe eine WPF Oberfläche auf der ich z.b. Eine Textbox habe und derren Inhalt über Databinding und Datacontext sowie DepencyProperty darstelle.

Als Beispiel eine einfache Personenklasse, schon mit abgeänderten Depency Properties:


  public class Person : DependencyObject
    {
        public static readonly DependencyProperty NameProperty = DependencyProperty.Register("Name", typeof(string), typeof(Person));
        public static readonly DependencyProperty VornameProperty = DependencyProperty.Register("Vorname", typeof(string), typeof(Person));

        public string Name
        {
            get
            {
                try
                {
                    return (string)this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background,
                        (DispatcherOperationCallback)delegate { return GetValue(NameProperty); }, NameProperty);
                }
                catch
                {
                    return (string)NameProperty.DefaultMetadata.DefaultValue;
                }
            }
            set
            {
                this.Dispatcher.BeginInvoke(DispatcherPriority.Background, (SendOrPostCallback)delegate { SetValue(NameProperty, value); }, value);
            }
        }

        public string Vorname
        {
            get
            {
                try
                {
                    return (string)this.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Background,
                        (DispatcherOperationCallback)delegate { return GetValue(VornameProperty); }, VornameProperty);
                }
                catch
                {
                    return (string)VornameProperty.DefaultMetadata.DefaultValue;
                }
            }
            set
            {
                this.Dispatcher.BeginInvoke(DispatcherPriority.Background, (SendOrPostCallback)delegate { SetValue(VornameProperty, value); }, value);
            }
        }

        public Person()
        {
            Name = "Renatus";
            Vorname = "Johannes";
        }

        public Boolean PrintPerson()
        {
            Thread.Sleep(5000);

            Name += "1";
            Vorname += "2";

            return true;
        }


    }

Wenn ich jetzt auf meiner Oberfläche noch einen Button hinzufüge und "PrintPerson" aufrufe bekam ich sonst mit den Standard Porperties immer folgenden Fehler:

"The calling thread cannot access this object because a different thread owns it."

da sah ein Property noch so aus:


public string Name
        {
            get { return (string)GetValue(NameProperty); }
            set { SetValue(NameProperty, value);}
        }

Aufruf der Funktion:


  public void Setitems()
        {
            BackgroundWorker backgroundWorker = new BackgroundWorker();
            backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork);
            backgroundWorker.RunWorkerAsync();
            
        }

        void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            Person.PrintPerson();
        }

die bisherige Lösung habe ich von dieser Seite:
DepencyProperty

habe schon etwas im Netz recherchiert aber konnte diesen Lösungsansatz kein weiteres mal finden, daher meine Frage ist das der richtige oder wird das unter WPF anders gelöst?

thx squadwuschel

28.01.2011 - 08:09 Uhr

danke erstmal für die Antworten 😃 werde ich mir heute mal zu gemüte führen 😃

thx squadwuschel

27.01.2011 - 17:50 Uhr

Hallo,

habe ein etwas spezielleres Problem und ich weiß leider nicht einmal genau wonach ich da bei google suchen soll.

Ich habe einen Windows Server 2008 64Bit R2. Der als Domaincontroler mit dient.
Wenn man da jetzt auf

Start -> Verwaltung -> Active Directory-Benutzer und -Computer (mit rechts als Admin ausführt)

Dann im nächsten Fenster unter Ansicht -> Erweiterte Features einstellt
Dann unter UnsereDomain.local -> Domain Controlsers geht und unseren Rechner rechts auswählen mit rechter Maustaste und dann auf Eigenschaften geht und den Reiter "Sicherheit" wählt und hier dann den "NETZWERKDIENST" mit allen Rechten hinzufügt.

Das würde ich gerne mit .Net erledigen also die Rechte Setzten dafür.
(wen es interessiert, das muss gesetzt werden um auf einem Domain Controler die Öffentlichen Message Queues freizuschalten, sonst stehen die nicht zur Verfügung.)

kann mir hier evtl. jmd weiterhelfen mit Code snippets oder ein paar guten Links.

thx squadwuschel

06.01.2011 - 11:02 Uhr

Hallo,

Danke erst erst einmal für die Antworten.

habe inzwischen auch was gefunden.

zu 1. Hierfür muss man wohl den Bootstrapper anpassen, dazu gibt es normalerweise wohl den "Bootstrapper Manifest Generator" aber da blicke ich noch nicht durch wie und was, man kann damit wohl die Liste anpassen der Software die installiert werden muss/soll für ein Projekt. aber für VS 2010 scheint es den Generator noch nicht zu geben.

zu 2. Geht jetzt auch, was ich nicht mitbekommen habe, man hat ja unter den "Anforderungen für den Zielcomputer" 2 Möglichkeiten

  • Zielcomputer durchsuchen
  • Startbedingungen (hier ist eine Fehlerangabe möglich und hier greift man auch auf die Suchergebnisse vom "Zielcomputer durchsuchen" zu kann angeben ob die Startbedingung erfüllt wurde.

wenn ich mehr zum Bootstrapper weiß melde ich mich nochmal evtl. kennt sich ja hier auch jmd damit aus 😃

thx much
squadwuschel

05.01.2011 - 17:52 Uhr

Hallo,

Ich habe schon ein wenig geschaut im Forum aber nichts konkretes gefunden.
Ich versuche ein Setup Projekt mit dem vom VS Prof 2010 mitgelieferten Mitteln zu erstellen. Habe mir auch schon eine Menge MSDN Artikel durchgelesen und leider nur

[Tutorial]Setup erstellen mit Visual Studio

Tutorial gefunden, was für den Anfang nicht schlecht ist aber evtl. hat jmd noch ein paar Links für mich auf denen Ich mich weiter belesen kann, würde ich mich sehr freuen.

Nun zu meinem aktuellen Problem

  1. Ist es möglich wärend eines Setups noch ein anderes Setup aufzurufen was ich für mein Programm benötige? (Ich spreche hier nicht vom Framework oder solchen .Net komponenten, das weiß ich wies geht) Ich habe z.b. noch eine weitere Setup.exe hier herumliegen die mit installiert werden muss.

  2. Ich weiß auch wie ich prüfen kann ob z.b. eine bestimmte Datei / Registry Eintrag vorhanden ist, aber bekomme nicht raus wie ich wenn diese nicht gefunden werden wie ich die Installation dann beenden kann mit der Angabe, das folgende Datei noch installiert werden muss.

Hier komme ich irgendwie nicht so recht weiter.

thx much
Squadwuschel

22.10.2010 - 10:07 Uhr

hio,

suche mal bei google nach "T4 .net" weiß nicht genau ob es das ist was du suchst aber damit kannst du zumindest klassen automatisch generieren lassen.

squadwuschel

04.10.2010 - 07:52 Uhr

Hio,

habe zwar von der Materie nicht soviel Ahnung, habe aber mit DevEpxress ganz gut Erfahrungen gemacht und die bieten auch Charting Controls an für WPF:

DevExpress Charting

evtl. mal damit versuchen

26.06.2010 - 12:08 Uhr

Hio,

wollte mal anfragen ob es sowas wie den "MaskedTextProvider" auch für Silverlight gibt?
Habe maximal fertige Controls gefunden, aber den MaskedTextProvider an sich fand ich sehr cool für WPF.

thx squadwuschel

19.06.2010 - 23:27 Uhr

Hio,

ich muss sagen ich weiss leider nichtmal wonach ich bei Google genau suchen soll, evtl. kann mir ja jmd weiterhelfen.

Also ich habe mir ein UserControl erstellt, was von TextBox ableitet (um genau zu sein eine MaskedTextBox erstellt) Klappt alles prima soweit.

Meine Frage ist nun wenn ich über XAML das Text Property setze der Textbox in welchem Event bzw. wann und wo bekomme ich mit was gesetzt wurde in meinem UserControl bzw. wie kann ich das ganze "abfangen" Gibt zwar ewig viele Events aber war keins dabei was mir vom Namen her gesagt hätte das isses.

Evtl. habe ich auch die falsche herangehensweise, wollte halt nur prüfen ob eine "standardwertübergabe" auch passt und ein paar Variablen initilisieren für den WErt der übergeben wird.

thx much
squadwuschel

😕 mann sollte auch richtig hinschauen und nicht das "OnTextChanged" Property übersehen.

18.05.2010 - 09:34 Uhr

danke dir, werde ich mir diese Woche mal zu gemüte führen.

thx squadwuschel

16.05.2010 - 17:28 Uhr

sry wenn ich bissl auf dem Schlauch stehe hast du nen kurzes Beispiel kann mit Markup Extension nix anfangen

thx squadwuschel

16.05.2010 - 12:02 Uhr

geht darum das ich wenn ich das Programm "ausliefere" und der Kunde die Schriftgröße ändern will dies über die AppConfig tun kann indem er hier den entsprechenden Wert setzt aber anscheinen muss ich das wohl anders lösen.

thx squadwuschel

15.05.2010 - 23:25 Uhr

leider bin ich bisher immernoch nicht weiter gekommen, kann mir nicht vorstellen das sich das Problem nicht per Binding lösen lässt 😕, hat evtl. jmd noch eine Idee?

thx squadwuschel

13.05.2010 - 22:54 Uhr

mh, habe auch nochmal etwas gesucht konnte aber leider auch nichts weiter finden zu dem Hinweis den du mir gegeben hast, wundert mich das es hier keine Lösung geben soll. Vor allem warum man auf die WErte in normalem Content zugreifen kann aber in den Styles nicht 😕

13.05.2010 - 14:06 Uhr

meinst du die Eigentschaft "serializeAs" in den "applicationSettings" für den jeweiligen Key, wo jetzt "string" drin steht? Weil das habe ich schon mit "int" versucht und hat hier leider auch keine Abhilfe gebracht.

thx squadwuschel

13.05.2010 - 10:18 Uhr

Hio,

also ich habe schon in Google danach gesucht und hier habe ich nur herausgefunden wie man auf UserStyles aus der AppConfig lädt und z.b. als Content einer Textbox hinterlegt.

Application Setting in der App.Config


 <applicationSettings>
    <Quiz.Properties.Settings>
      <setting name="SchriftgroesseFrageText" serializeAs="String">
        <value>55</value>
      </setting>
    </Quiz.Properties.Settings>
  </applicationSettings>

Dann muss folgender Verweis in die XAML Datei eingebunden werden:


  xmlns:props="clr-namespace:Quiz.Properties"

dann kann z.B. in einem Label der Wert 55 ausgegeben werden:


<Label Content="{Binding Source={x:Static props:Settings.Default}, Path=SchriftgroesseFrageText}" />

das funktioniert soweit. Ich hatte aber gehofft das ich auf diese WErte auch in Styles zugreifen kann d.h. das ich z.b. in der App.xaml einen Style definieren kann:


<Style x:Key="FrageLabel" TargetType="Label">
     <Setter Property="FontSize" Value="{Binding Source={x:Static props:Settings.Default}, Path=SchriftgroesseFrageText}"></Setter>
</Style>

und dann hier die Schriftgroße aus der Appsettings zu laden. Leider funktioniert das nicht, hat hier evtl. einer eine Idee oder ERfahrungen wie man so etwas machen kann oder was ich falsch mache?

thx squadwuschel

25.04.2010 - 08:51 Uhr

ich nutze fast ausschließlich den debugger 😃 um zu sehen was ankommt.

und ja du hast recht es gibt ein e.parameter aber hier kommt bei mir "null" zurück.
Habe es auch mal mit einem "einfacheren" beispiel probiert wo ich nur eine Gesture gesetzt habe und der Button nicht mittels Template gefüllt wird, habe ich einfach einen String als Parameter gesetzt und auch hier wird "null" zurückgegeben wenn ich e.parameter anschaue

thx squadwuschel