Laden...

Forenbeiträge von Omit Ingesamt 143 Beiträge

14.11.2011 - 11:10 Uhr

Hallo,

ich muss gerade eine WPF Anwendung dokumentieren. Und mach dafür gerade ein paar Screenshots. Bei diesen Screenshots werden Popups (z.B. einer ComboBox), nicht angezeigt. Kennt ihr ein Tool, welches die Popups auch mitabbildet?

Wenn mit dieses Tool auch einzelne Controls auswählbar sind, wie z.B. eine Scrollview, welche dann komplett (auch mit unsichtbaren Bereichen) abgebildet werden. Wäre das mehr als gut.

Danke und Gruß Timo

27.05.2011 - 10:24 Uhr

Hallo,

danke. Werde ich mir merken. Arbeite aber noch mit dem 3.5. Erst das nächste Projekt, dass ich Anfange werde ich wohl in 4.0 machen.

Gruß Timo

26.05.2011 - 12:02 Uhr

Hallo,

@herbivore!
Danke für deine Antwort, danke für deine Antwort. Ich werde deine generische SyncQueue meiner globalen Infrastruktur hinzufügen. So was braucht man ja immer wieder. Danke.

Das Problem lag wirklich an dem ReadByte. Es kommt an dem Port nur eine Nachricht als Antwort an, wenn ich auch was wegschicke! Deswegen kam der Worker nicht mehr aus dem Read raus, weil er nichts mehr weggeschickt hat.

Danke und Gruß Timo

25.05.2011 - 22:38 Uhr

Hallo ujr!

Woher weißt Du das?

Weil ich im Thread-Objekt nach dem unterbrechen der Anwendung nachgeschaut habe.

Und wo genau ist das Problem?

Das Problem ist, dass ich dann keine Nachrichten mehr über den SerialPort schicken kann, weil der Worker nicht mehr reagiert.

Naja - außer, vielleicht, dass Read blockiert bis Daten kommen oder ein Timeout abgelaufen ist.

Das könnte der Hinweis gewesen sein, den ich brauche. Ich werde morgen mal den Quelltext dagegen abdichten. Danke!

Etwas mehr Sorgfalt täte schon gut.

Ok habe es übersetzt!

Danke für deine Antwort und noch einen schönen Abend.
Gruß Timo

25.05.2011 - 17:39 Uhr

Hallo,

Ich habe einen Worker Thread der in einer dauerschleife eine Queue nach Nachrichten abfrägt. Der Zugriff auf die Queue über enqueue und dequeue ist bei locks umschlossen. Die Queue ist der einzigste was beide Threads nutzen. Der GUI Thread stellt Nachrichten in die Queue und der Worker Thread holt Sie aus der Queue.

In dem Worker Thread verwende ich einen System.IO.Ports.SerialPort. Das ist kein Thread Safe Objekt.
Ich verwende keine Events! Ich checke ob Daten da sind in der Endlosschleife, wenn Daten da sind lese ich diese Daten. Der GUI Thread verwendet den SerialPort nicht.

Einigen Minuten nach dem Start wird der Worker Thread unterbrochen und wird in den WaitSleepJoin Status versetzt. Ich bekomme das Problem nicht in den Griff. Vielleicht ist es der SerialPort, aber das ist nur ein Gedanke.

Kannst du mir helfen das hinzubekommen? Danke und noch einen schönen Tag!

Gruß Timo

Edit: Hab die Nachricht übersetzt.

Hello,

I have a Worker Thread looping and reading from a Queue the access (enqueue and dequeue) to the Queue is surrounded by a lock. This is the only part both Threads(Gui and Worker) are accessing. The Gui Thread enqueues a Message Worker Thread dequeues it.

In the Worker Thread I'm using a System.IO.Ports.SerialPort. This is a not Thread Safe Object.
I don't use the Events! I check on Data in the Loop and if there is any Data I read it. The GUI Thread doesn't use this serialPort.

After a few Time after execution the Worker Thread gets suspended in the WaitSleepJoin Mode. I don't get the Problem. Perhaps it is the SerialPort but just a thought.

Can you help me to get this right? Thank you and have a nice day!

Gruß Timo

p.S. Sorry hab gerade gemerkt das ich ja auf einem deutschen Forum schreib. Wenn es wen stört übersetze ich das noch. Aber jetzt erstmal Freundin am Bahnhof abholen. Auch wenn mein Englisch zu grauenhaft ist. *g

02.05.2011 - 14:46 Uhr

Leider nur kurz. Sorry. Hab das mal gemacht und da hab ich das Controltemplate angepasst. Ganz genau kann ich dir das jetzt nicht mehr sagen. Hab damals das Stackpanel durch Treeview ersetzt. Hab da mit MVVM gearbeitet und die Bindings gesetzt. SelectedItem hab ich dann an eine ViewModel-Property gebunden.

Wenn du, wenn ich wieder an meinem Hauptrechner bin immer noch Probleme hast, dann schau ich mal in meinen alten Code. (Entweder morgen Abend oder Wochenende)

Vielleicht hat jemand noch bessere Hilfe.

ControlTemplate findest hier was:

http://msdn.microsoft.com/de-de/library/ms752094.aspx

Das sind die wichtigen Teile:


...
          <ContentPresenter x:Name="ContentSite"
                            IsHitTestVisible="False"
                            Content="{TemplateBinding SelectionBoxItem}"
                            ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
                            ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}"
                            Margin="3,3,23,3"
                            VerticalAlignment="Stretch"
                            HorizontalAlignment="Left">
          </ContentPresenter>
          <TextBox x:Name="PART_EditableTextBox"
                   Style="{x:Null}"
                   Template="{StaticResource ComboBoxTextBox}"
                   HorizontalAlignment="Left"
                   VerticalAlignment="Bottom"
                   Margin="3,3,23,3"
                   Focusable="True"
                   Background="Transparent"
                   Visibility="Hidden"
                   IsReadOnly="{TemplateBinding IsReadOnly}" />
....
              <ScrollViewer Margin="4,6,4,6"
                            SnapsToDevicePixels="True">
                <StackPanel IsItemsHost="True"
                            KeyboardNavigation.DirectionalNavigation="Contained" />
              </ScrollViewer>



08.03.2011 - 21:47 Uhr

Der Server steht echt bei dir? Reagiert echt schnell. Wie bist du denn angebunden?

Übrigens geile Idee, wie du erklärst. Mit der Biene und den Waben die Features ins bildliche zu holen. Gut überlegt! So Sachen stellen auch einen Wettbewerbsvorteil da.

Gruß Timo

08.03.2011 - 18:13 Uhr

Hallo Xynratron,

danke für deine Antwort. OK das bei P2P Netzwerken, diese Technik eingesetzt wird, war mir bis jetzt noch nicht bewusst.

Jemand will in eine Datei einen Virus einpflanzen. Fraglich ist halt nur ob er, da die Syntax einer ausführbaren Datei doch recht viel zulässt, eine Kollision finden kann. ...am Anfang steht der veränderte Code (Virus) und hintendran einfach ein "Ausgleichsterm". Hast mir ja gute Schlagwörter geliefert.

Danke für diese, das ist immer ein guter Einstiegspunkt. Da das Gebiet nur so Rand Gebiete für mich ist, hatte ich da noch kaum.

Ja es erstaunt mich immer wieder, wieviel die cleveren Leute doch schon alles durchdacht haben. Ich find es aber dann auch immer spannend zu sehen, das man ähnliche Grundgedanken hat, wenn man sich neu damit beschäftigt. Doch alle die Bretter auf allen Weg nochmal zu brechen, wäre Zeitverschwendung.

Gruß Timo

06.03.2011 - 16:47 Uhr

Hallo,

Sehr gut zum starten in den Bereich Collective Intelligence ist:
Programming Collective Intelligence: Building Smart Web 2.0 Applications
Toby Segaran(Google, Metaweb)

Ein gutes Buch um sich über skalierbarkeit zu informieren.
Building Scalable Web Sites
Cal Henderson (ein Flicker Entwickler, der vom Start an dabei war)

Alles von Martin Fowler ist natürlich auch zu empfehlen. Besonders gut von den Büchern die ich gelesen hab fand ich:
Analysis Patterns: Reusable Object Models
Martin Fowler

Gruß Timo

05.03.2011 - 15:27 Uhr

Hallo Totenkopfschwärmer und auch alle anderen,

Du wirst schon sehr schnell größere Sachen auf die Beine stellen können. Doch ein wirklicher Profi wirst du nicht über Nacht.

Ich habe auch so mit 14-15 angefangen und hab gleich die größten Programme schreiben wollen. Hab damals noch auf einem einfachen Level gearbeitet. Trotzdem schon echt einiges anstellen können. Jetzt sind schon einige Jahre vergangen. Hab auch mal ein paar Jahre Pause gemacht und auch nicht mein ganzes Leben dem Programmieren verschrieben. Die letzten 2-3 Jahre hab ich wieder intensiver, nach einer langjährigen Pause, auf einem professionelleren Level mit Softwareentwicklung beschäftigt. Bin jetzt am Ende meines Studiums. Im Studium lernst einfach auch eine ganz andere Denkart. Trotzdem würde ich sagen das ich noch viel zu lernen hab. Aber ich bin guter Dinge mich irgendwann die nächsten Jahre zu ihnen zählen zu können.

Nachtrag: Das mit den Fachbegriffen verstehen, aber keine Definition dafür parat zu haben: Ich glaub das geht den meisten so. So wie ich das sehe gibt es Leute die sprachlicher denken und welche die eher in Bildern denken (eine sehr vereinfachte auch sicher falsche Darstellung). Wenn man eher sprachlich denkt fällt einem das mit den Definitionen einfacher.
Es ist immer so eine Sache mit dem verstehen. Ich denk bei den meisten Sachen häufiger über die selbe ach jetzt hab ich es verstanden. Ich bin am überlegen, ob es überhaupt so was wie eine absolute Verständnis gibt.

Gruß und noch viel Spaß Timo

05.03.2011 - 13:30 Uhr

Ich bin dankbar für die Argumente. Ich denk auch über diese nach, nur sind die teilweise schon konkret gewesen, wo ich mit meinen Gedanken noch Spielchen gemacht habe. Doch hilft mir das weiter auf meinem allgemeinen Weg ein guter Softwareentwickler zu werden. Dadurch verstehe ich unter anderem, was für solche wichtig ist.
Fest zu halten bleibt: Ich sollte in Zukunft mehr drauf eingehen, wodrauf ich hinaus will. Auch war es nicht richtig, diese Argumente nicht in meinen weiteren Posts zu behandeln. Sorry.

Im Prinzip will ich ja nur die Server (IPs) , der relevanten Cache Server, im Browser speichern (War mir im ersten moment der Idee eigentlich nicht so klar). Davon verspreche ich mir den Round Trip zum Master-Cache-Server zu sparen. Dazu muss ich eigentlich noch nicht mal sicherstellen das die Daten stimmen, ist mir dann eingefallen. Da ich bei einem Miss einfach den Master-Server frag. Kommt ja eh fast nie vor, das wer diese Daten ändern wird.

Das andere was sich aus der Idee ergeben hat war der Gedanke ob es möglich ist einem Fremdanbieter Daten anzuvertrauen und im nachhinein feststellen kann ob er sie geändert hat. Da habe ich an eine Signatur(Hash) gedacht.

Ich arbeite zur Zeit an keiner Anwendung die so skalieren muss. Aber daran seht ihr schon wie theoretisch das bei mir ist.

Ein Buchvorschlag wollte ich zu Cryptographie, aber nicht zu den theoretischen Grundlagen, an den Formeln will ich jetzt nicht rumdoktoren. Sondern sollte behandelt werden, was es gibt und wieso es das gibt. Wenn ihr dazu noch was wisst würde mich das freuen.

Vielen Dank für eure Antworten,
Timo

11.02.2011 - 16:17 Uhr

Nein ich glaub euch das es Unsinn ist und verstehe eure Argumente. Ich will es nicht (mehr) als SessionCache verwenden.

Meine danach Angestellten Überlegungen sind theoretischer Natur.
Kann man jemanden was aushändigen zur Speicherung und nur einen kleinen Teil selbst speichern zur Überprüfung. Und in den Inhalt dann vertrauen.

Es kann sein das es dafür zur Zeit keine Anwendung gibt. Aber Spielregeln ändern sich ja auch mal oder man kommt in andere Gebiete wo es andere Spielregeln gibt.
Man könnte das Problem mit dem von Seti@home-Problem vergleichen. Die auch in ihre Nutzer vertrauen müssen. Die machen das darüber das sie jede Berechnung 3mal ausführen lassen und die Ergebnisse vergleichen. Vielleicht programmiert man eine Peer-To-Peer Festplatte oder so.

Mir ist bewusst das ich Lost im Gedankenspace bin. Aber manchmal kommen aus so Überlegungen Ideen.
Hab nur zur Zeit etwas Freizeit, deswegen lass ich meine Gedanken kreisen.

Wenn das nicht der richtige Ort für so Gedankenspiele ist, dann verstehe ich das und entschuldige mich fürs abtrifften.

Danke und Gruß Timo

11.02.2011 - 13:42 Uhr

Danke für eure Antworten.

Bezüglich Hash, wenn man auf dem Server jedoch die Syntax überprüft, dürfte es doch nicht gerade einfach sein einen semantisch sinnvollen Inhalt zu erstellen. Dann noch einen Teil des Inhalts auf dem Server lässt(sowas wie ein Salt). Klar kann der den Salt dann noch erraten aber wie wahrscheinlich ist das und mal die Wahrscheinlichkeit das er Syntaktisch und Semantisch Sinnvollen Inhalt mit dem selben Hash hinbekommt.
Müsste dann ja Richtung Public und Secret Key gehen.

Kennt ihr vielleicht ein Buch das gut ist, wo solche Probleme beschrieben sind? Abstrakt und am besten noch mit Anwendungsbeispiel.

Gruß und Danke Timo

11.02.2011 - 13:18 Uhr

Serverkosten einsparen. Ram einsparen, Netzwerkauslastung reduzieren. Aber ist nur hypothetisch. Nur eine lern Überlegung.

Gruß und Danke Timo

11.02.2011 - 12:45 Uhr

OK ich probiers nochmal:

Warum sendet man nicht die UserDaten(SessionDaten) an den Client als JSON Objekt zum Beispiel? Da man dem Client aber nicht trauen kann, bildet man über die Seesiondaten einen Hash, den man auf der Server Seite lässt. Beim Zurücksenden der Sessiondaten checkt man einfach den Hash und hat die Sessiondaten auf dem richtigen Server. Man muss halt nur den Hash austauschen. Könnte man Cach-Speicher sparen. Denk das es sich aber rein aus Performance Gründen nicht lohnt. Aber würde mich interessieren ob da aus Sicherheitsgründen was dagegen spricht.

Danke und Gruß Timo

10.02.2011 - 22:39 Uhr

Hallo Leute,

wollt mal Nachfragen warum man den Client nicht als Cache verwenden sollte. Man könnte doch einen Hash abgleich machen. Das ein Hacker da einen Inhalt findet der Sinn ergibt und den selben Hashwert sollte doch gegen null gehen.
Mir kommt da zur Zeit kein Grund außer vielleicht Performance. Kann mir da wer auf die Sprünge helfen.

Danke und Gruß Timo

23.04.2010 - 11:42 Uhr

Hallo,

Also ich hab mal gehört, dass die meiste Zeit im Client(Browser) draufgeht um die Seite zu rendern. Ich will mir auch dazu mal ein Buch kaufen, wenn mein jetziger Stapel abgearbeitet ist:
http://www.amazon.de/High-Performance-Web-Sites-Faster-Loading/dp/0596529309/ref=pd_sim_eb_8

Gruß Timo

23.04.2010 - 10:34 Uhr

Hallo Leute,

Edit all:(Probiere meine Frage, klarer zu formulieren)

Ich will eine Web-Anwendung schreiben, die sich durch den Benutzer erweitern lässt. Also man hat z.B. einen Forum-Beitrag, bei dem man ein Thema und den Text standardmäßig angeben kann.
Dem Nutzer (Rolle=Admin) soll es ermöglicht werden noch eine weitere Eigenschaft/Feld anzulegen.
Beispiel: Es ist ein Datenbankforum und der Admin will, dass bei jedem Beitrag noch die Datenbank angegeben wird.
Also fügt er eine Eigenschaft "Datenbank" zu der Forumbeitrags-"Klasse" hinzu. Diese Eigenschaft darf Ausprägungen haben die der Admin auch mit angibt.
Ich sehe dann folgende Daten die der Admin anlegt:
Eigenschaft1 = "Datenbank"
Eigenschaft1-Typ = "Nominalskala"
Eigenschaft1-Ausprägung1 = "SQLServer"
Eigenschaft1-Ausprägung2 = "DB"
Eigenschaft1-Default = 1
Wenn der Nutzer (Rolle=Beitragsschreiber) einen neuen Beitrag schreibt bekommt er neben den standard Eigenschaften nun auch die Eigenschaft Datenbank präsentiert. Die er angeben kann und beim Speichern mitgespeichert wird. Beim Anzeigen des Beitrags wird diese Eigenschaft angezeigt.

Als Typ sollen aber auch andere Möglichkeiten gegeben werden. Das ganze ist nur ein Beispiel.

Was wäre eure Idee sowas umzusetzen?

Ich bin da schnell bei XML, XSLT und XML-Shema gelandet. Doch frage ich mich wie performant das ist.

Gruß und Danke Timo

09.12.2009 - 17:39 Uhr

Wäre auch eine Möglichkeit. *g

09.12.2009 - 17:14 Uhr

Wo bekommst du denn die Itemsource her da musst du doch irgendwo eine Klasse haben, die die ObservableCollection enthält. Dort kannst du dieses Property doch anlegen. Und wie bekommst du denn momentan im Code heraus welches Item selectiert ist, ich mach das immer über so ein Property? 🤔

Gruß Timo

09.12.2009 - 17:08 Uhr

Hallo,

ich will die Bindings in einer View updaten wenn ich auf einen Save oder Cancel Button klicke. Doch ich will nicht jedes Feld einzeln Updaten, sondern eher nach den Bindings die in der View enthalten sind einfach per Code suchen und dann updaten.
Der Grund dafür ist das ich zur Zeit erst die Controls verlassen muss also (lostFocus) bevor sie updaten. Beispiel wenn ich ein Textfeld ändere und dann gleich ohne das Textfeld zu verlassen auf Save klicke, wird das Feld mit dem alten Wert gespeichert.

Gibt es eine einfache Möglichkeit alle Bindings in einer View zu suchen?

Gruß und Danke Timo

13.11.2009 - 08:20 Uhr

Vielleicht mit einem Converter(IValueConverter). Sollte doch für einen SolidColorBrush möglich sein.

Gruß Timo

12.11.2009 - 21:01 Uhr

Danke für den Hinweis, ich muss das alles eh noch anpassen, da meine Items unterschiedlich groß sind. Muss das aber doch erstmal queuenen, da die Prioritäten wo anderst liegen.

Gruß Timo

11.11.2009 - 17:41 Uhr

Danke Lector ist echt eine Coole Beispiel Anwendung. Da ist auch einiges anderes dabei was ich noch gebrauchen könnte. Habe mich jetzt aber noch nicht in den Code gekniet um zu schauen ob es für mich praktikabel ist. Aber sieht so weit gut aus!

Edit:
Ja das scheint praktikabel zu sein. Echt coole Ansatze und Umsetzungen. Würde ich jedem raten sich das auch mal anzuschauen.

Danke und Gruß Timo

11.11.2009 - 00:54 Uhr

Hallo Leute,

ich würde gerne das Panel einer ComboBox gerne nach dem öffnen nochmal neu positionieren. Ich habe eine MultiSelectComboBox, da das ItemsControl bei der Selection eines Wertes größer wird, hängt das Panel dann über der ComboBox.
Oder zu weit unten wenn ich die deselectiere.
Ich setze das (Placement="Bottom").

Danke und Gruß Timo

10.11.2009 - 23:56 Uhr

Hallo,

ich probiere zur Zeit auf das CollectionChanged Event einer ObservableCollection zu reagieren, die an ein ItemsControl gebunden ist. Wenn zwei Werte getauscht werden("Move"), soll in einer ListBox oder Treeview ein Animation angezeigt werden, die dies visualisiert. Wohl über Adorner.
Im Internet habe ich dazu leider nichts gefunden. Vielleicht könnt ihr mir auf die Sprünge helfen.

Gruß Timo

03.11.2009 - 12:25 Uhr

Hallo Leute,

ich habe zu dem Problem, was auf CodeProject gefunden. Dort beschreibt Josh Smith die Lösung ziemlich gut.

Es wird in ValidationRule ein DependencyObject("FrameworkElement") geschachtelt. Da dieses FrameworkElement nicht im VisualTree ist, muss eine Bridge verwendet werden um den den DataContext in das FE zu bekommen.

Das funktioniert bei mir ziemlich gut. Und das Vorgehen kann man sicher auch gut an anderen stellen einsetzen.

Gruß Timo

p.S. Man benutzt ein FrameworkElement, da ein FrameworkElement einen DataContext hat.

31.10.2009 - 12:42 Uhr

Hallo Leute,

ich musste leider feststellen das ValidationRule kein DependencyObject ist.

Was ist dabei das Problem?
Ich habe ein Dynamisches Typ "System" in einer Software integriert.
Ich lege also erst zur Laufzeit fest wie die Datenstruktur aussieht. Um diese Daten zu validieren muss ich natürlich dann auch Validierungsregeln haben, die von der angelegten Datenstruktur abhängen.

Dies wäre ganz einfach wenn ich an eine Validation Rule binden könnte.
Beispiel:


<local:NumberOnlyRule Min="{Binding Model.MinValue}" Max="{Binding Model.MaxValue}" />

Doch dies geht halt nicht, da ValidationRule kein DependencyObject ist.

Ich habe überlegt eine ValidationRule zu schreiben, die von DependencyObject ableitet, doch Binding..::.ValidationRules Property setzt ValidationRule und kein IValidationRule Interface voraus.

Kennt ihr vielleicht noch ein Workaround?

Gruß Timo

21.10.2009 - 15:50 Uhr

Gibt es, hab es zwar noch nicht getestet, aber hört sich gut an! Wo anderst habe ich noch so was gesehen, aber wo nur?

EvalBinding and SimpleBinding

Gruß Timo

21.10.2009 - 15:43 Uhr

Hi,

winSharp93 hat mir mal den Namen ModelViewModel für ViewModels, welche ein Model wrapen, vorgeschlagen. Seit dem verwende ich diesen Namen. Ist nach meiner Meinung eine sehr sinnvolle Sache.

Gruß Timo

20.08.2009 - 19:31 Uhr

Freut mich das ich dir helfen konnte. Schöne Webseite. Bist du da im Urlaub oder Auslandsemester oder ausgewandert? Wenn ich fragen darf?

Gruß Timo

20.08.2009 - 18:59 Uhr

Ok hätte ich vielleicht erwähnen sollen.

Musst noch casten zu Region.


        private void OnGoToUserAccountDashboard(object parameter)
        {
            IUserAccountDashboardView dashboardView = _container.Resolve<IUserAccountDashboardViewModel>().View;
            Region mainRegion = _regionManager.Regions[ShellRegionNames.MainRegion] as Region;´
            if (mainRegion != null)
            {
                        if (mainRegion.Views.Contains(dashboardView) == false)
                        {
                            mainRegion.Add(dashboardView);
                        }
                        //// Activate the Region

                        object currentActiveView = mainRegion.ActiveViews.FirstOrDefault();
                        if (currentActiveView != null && currentActiveView != view)
                        {
                            mainRegion.Deactivate(currentActiveView);
                        }
                        mainRegion.Activate(dashboardView);
            }
            else
            {
            //errorhandling
            }

        }

Mag nicht ganz sauber sein, aber bei mir tut es seine Dienste.

20.08.2009 - 15:39 Uhr

Du bekommst dort her nur eine schon bestehende Instanz. Diese wird aber wo anderst erzeugt. Also hast du an der stelle da keinen Einfluss mehr drauf.


            if (MainRegion.ActiveViews[0] != null && MainRegion.ActiveViews[0] != view)
            {
                MainRegion.Deactivate(MainRegion.ActiveViews[0]);
            }
            MainRegion.Activate(view); 

Gruß Timo

20.08.2009 - 10:03 Uhr

Die SingleActive Region macht, eigentlich nichts anderes als, die Activate Methode zu überschreiben.
Wenn du Activate aufrufst wird die CurrentActive Region durch Deactivate geschickt. Wenn du die Regions in XAML definierst wird glaub ich automatisch die richtige Region gewählt(Achtung ich lauf über glatt Eis, ich definiere alle meine Region im Code und binde zu ihnen).
Doch du kannst das ganze auch per Code erledigen. Ist aber nicht wirklich schön, da du überall wo du eine View der Region aktivierst diesen Code einfügen müsstest.


            object currentActiveView = MainRegion.ActiveViews.FirstOrDefault();

            if (currentActiveView != null && currentActiveView != view)
            {
                MainRegion.Deactivate(currentActiveView);
            }
            MainRegion.Activate(view);


Wenn du aber SingleActiveRegion auch auswählen kannst solltest du das so machen.

Gruß Timo

17.08.2009 - 21:39 Uhr

An was für ein Element ist denn die MainRegion geknüpft?
Ich benutze ein TabControl. Du scheinst eher ein einfaches ContentControl zu benötigen. Da sollte es glaub ich so funktionieren wie es bei dir im c# code steht, wenn ich das jetzt so Überblicke.

Modale Anzeigen händele ich so:


<Window x:Class="AAAA.Shell"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:cal="http://www.codeplex.com/CompositeWPF" 
    Title="AAAA" MinWidth="900" MinHeight="600" WindowStartupLocation="CenterScreen" WindowState="Maximized">
    <Window.Resources>
        <ResourceDictionary Source="ShellResources.xaml" />
    </Window.Resources>
    <ContentControl>
        <ContentControl.ContentTemplate>
            <DataTemplate>

                <Grid DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext}">
                    <ContentControl x:Name="MainWPF">
....................
                    </ContentControl>
                    <ContentControl x:Name="ModalWindow" Content="{Binding FirstViewOfModalRegion}">
                        <ContentControl.ContentTemplate>
                            <DataTemplate>
                                <Grid>
                                    <Border Background="#90000000" Visibility="{Binding Visibility}">
                                        <Border BorderBrush="Black" BorderThickness="1" Background="AliceBlue" 
					                        CornerRadius="10,0,10,0" VerticalAlignment="Center"
					                        HorizontalAlignment="Center">
                                            <Border.BitmapEffect>
                                                <DropShadowBitmapEffect Color="Black" Opacity="0.5" Direction="270" ShadowDepth="0.7" />
                                            </Border.BitmapEffect>
                                            <ContentControl Content="{Binding View}"  Margin="10">
                                            </ContentControl>
                                        </Border>
                                    </Border>
                                </Grid>
                            </DataTemplate>
                        </ContentControl.ContentTemplate>
                    </ContentControl>
                </Grid>
                <DataTemplate.Triggers>
                    <DataTrigger Binding="{Binding ElementName=ModalWindow, Path=HasContent}"  Value="True">
                        <Setter TargetName="ModalWindow" Property="Visibility" Value="Visible"/>
                        <Setter TargetName="MainWPF" Property="IsEnabled" Value="False"/>
                    </DataTrigger>
                    <DataTrigger Binding="{Binding ElementName=ModalWindow, Path=HasContent}" Value="False">
                        <Setter TargetName="ModalWindow" Property="Visibility" Value="Collapsed"/>
                        <Setter TargetName="MainWPF" Property="IsEnabled" Value="True"/>
                    </DataTrigger>
                </DataTemplate.Triggers>
            </DataTemplate>
        </ContentControl.ContentTemplate>
    </ContentControl>
</Window>

Ich habe die Regions im Code definiert und binde an sie. Der Modaledialog wird angezeigt, wenn FirstViewOfModalRegion eine View enthält(Ist eine Property die nur die erste View aus der ModalRegion "wraped") Bei mir enthält es ein ViewModel, welches einen Verweis auf die View enthält auf die ich dann binde.
Das einblenden und ausblenden und deaktivieren der anderen UserControls funktioniert über DataTriger.

Hoffe dir hilft der ModaleDialog(hab dazu auch irgendwo ein Artikel gelesen weiß aber nimmer wo und den Code leicht modifiziert).

Gruß Timo

17.08.2009 - 13:02 Uhr

Kenn mich da nicht so gut aus, aber Session ID ist doch klar ein Fall für im Speicher halten(Caching). Da sie nur für einen gewissen Zeitraum benötigt werden. Da sie bei jedem Aufruf des Nutzers benötigt werden.
Insgesamt würde ich mich da über "Claims-Based Identity" informieren.
Ich würde das ganze als eigenen Service in einem eigenen Prozess umsetzen. So kannst du diesen Prozess auch auf eine andere Maschine verschieben, wenn du irgendwann mehrere Webserver brauchst. Den Webserver sollte man nach meiner Ansicht immer auch Statusfrei halten. Caching und so immer in einen eigenen Prozess. Da gibt es ja auch schon einige Opensource Projekte dazu.

Gruß Timo

17.08.2009 - 09:35 Uhr

Guter Name, werde ich übernehmen. Danke für die Antwort, jetzt weiß ich das ich kein Blödsinn mach.

Gruß Timo

16.08.2009 - 23:02 Uhr

Ich arbeite zur Zeit auch mit MVVM und setze dazu noch Prism ein.
Prism ist ein Framework um zusammengesetzte(Composite) Anwendungen zu entwickeln. Es spielt mit Unity zusammen wodurch man die Anwendung auch erweiterbar aufbauen kann.
Dort definiere ich Module welche Views und ViewModels enthalten. Diese Views können dann in definierte Regions(Bereiche der anderen Views oder des Fensters) eingefügt werden.
Ich könnte mir gut vorstellen, dass es möglich ist ein Canvas Objekt als Region zu definieren und dort in unterschiedlichen Modulen(dlls) definierte Views(Shapes) hineinzufügen.

MiniUML ist auch eine DiagramEditor wo MVVM einsetzt. Shapes sind auch erweiterbar wenn ich mich richtig erinnere.

Diese Unterteilung ist mir jetzt noch nicht begegnet.

Mir auch noch nicht.

Also ich definiere immer nur UserControls in WPF(XAML only) und binde durch setzen des DataContextes das ViewModel dran. Durch Binding kann ich da sehr gut Daten vom ViewModel ändern. Und Commands helfen das Verhalten zu implementieren.
Ich resolve die Views aus dem Unity Container im Constructor des ViewModels über ein Interface IBlaView. Dieses Interface enthält nur eine Methode SetModel durch die ich das ViewModel(this) übergebe. Ich übergebe immer das ViewModel an die Region. Die View wird dann Binding an ein Content-Property angezeigt.

offtopic:
Ich neige dazu für jedes BussinesObject ein ViewModel(A) zu definieren und diese dann nochmal in ein ViewModel(B) speziel für eine bestimmte View zu verpacken. So kann ich das BOViewModel von a nach b reichen und beide Views werden syncronisiert. Was haltet ihr davon? Wie händelt ihr das?

Gruß Timo

02.08.2009 - 23:50 Uhr

Ich benutze sie auch und habe bis jetzt keine Probleme gehabt.

Gruß Timo

30.07.2009 - 23:36 Uhr

Ich würde jetzt ja was sagen zu verspätete Regulierung.... aber gooOKel hört zu(*g)!!

30.07.2009 - 14:36 Uhr

So das sind immer die Themen wo ich gerne meinen Senf dazugebe:
Es wird nach meinem Gefühl in der Softwareentwicklung zu oft erwartet eine möglichst allgemeingültige Lösung zu finden. Doch eine Lösung die probiert allen Bereichen zu genügen, kann nicht so nützlich sein. Um so abstrakter man Lösungen/Regel aufstellen will, um so weniger Information können sie per Definition enthalten. Denn Abstraktion ist das WEGLASSEN VON INFORMATION. Wiki

Wenn man in der Softwareentwicklung fragen stellt, dann hört man oft: "Es kommt drauf an." Da frag ich mich immer, auf was es ankommt. Natürlich auf die Art der Software die man entwickelt. Warum hört man solche Aussagen im Maschinenbaubereich jedoch nicht so oft?

Wenn sich ein Maschinenbauer aus der Automobilbranche mit einem von einer Werft unterhält, dann haben die zu 90% anderes Wissen. Deswegen werden die sich auch nicht darüber unterhalten wie man einen Motor baut. Die Grundlagen mögen ähnlich sein, doch wäre das Wissen des einen im anderen Bereich wohl häufig sehr falsch.

Wenn sich zwei Maschinenbauer aus dem selben Bereich unterhalten, ist also schon klar welche Rahmenbedingungen gelten. Durch solche klaren Unterteilungen können Bücher voll Regeln aufgestellt werden, wie man einen Motor für ein Schiff konstruiert und baut.

Dies fehlt mir ein wenig in der Softwareentwicklung. Klar das gibt es auch schon Ansatzweise in der Softwareentwicklung.(z.B. SOA für Enterprise Software) Doch gibt es in der Informatik noch nicht genügend Untergliederungen und auch nicht genügend Regeln in den schon zu erkennenden Bereichen.

Mit einer besseren Untergliederung und mehr Regeln gäbe es auch mehr Möglichkeiten Komponenten zu entwickeln die man hinzukauft. Das was in der Softwareentwicklung an Komponenten zu Verfügung steht, ist nach meiner Auffassung ein Witz. Das wäre als würde man ein Auto aus Schrauben und Blech aufbauen, nur da im Schiffsbau keine Reifen benötigt werden.

Software Engineering: Dead?
Ja klar wieso sollte ich für ein Handyspiel, erstmal mathematisch beweisen das es lauffähig ist.

Software Engineering: Dead?
Nein auf keinen Fall! Wie kommst du auf die Idee, dass ich ein Atomkraftwerk an eine Software hänge, wo ich nicht Beweisen kann, dass sie funtioniert.

In der Softwareentwicklung wird sich nach meinem Gefühl zu häufig Allgemein unterhalten, statt mal konkret nur für einen Bereich was zu diskutieren. Das sich Softwareentwickler aus unterschiedlichen Bereichen nicht auf einen Konsens einigen können ist für mich kein Wunder.

Gruß Timo

03.07.2009 - 19:44 Uhr

verwendetes Datenbanksystem: SQL Server 2005 Express

Hallo Leute,

ich bin gerade dabei in einer Client & Datenbank Anwendung einen Data Access Layer zu schreiben(oder es zu probieren). Die Select Anfragen, stellen mich vor kein Problem, auch bekomme ich es hin neue Datensätze einzufügen, updaten oder deleten. Doch wenn die Objekte mehrer Referenzen auf andere Objekte haben die schon in der Datenbank existieren bekomme ich Probleme bei den Updates,Creates u. Deletes.

Wenn ich eine neue Entity die auf eine bestehende verweist "create" wird mir gesagt, dass ein Entity Object nicht von mehreren Insatanzen von IEntityChangeTracker referenziert werden kann.

Das löschen ist auch nicht will auch nicht so klapen wie ich es mir vorstelle. Irgendwie müsste ich dem wohl noch mitteilen, wie er mit den Referenzen umzugehen hat.

Kennt jemand eine Beispielanwendung die einen DAL implementiert und das ADO.Net Entity Framework benutzt.
Das Expense Beispiel habe ich, aber das ist zu einfach gehalten.

Gruß und Danke Timo

Mein DAL-Code


        public SymptomType Create(SymptomType symptomType)
        {
            using (Entities ctx = new Entities())
            {
                try
                {
                    ctx.AddToSymptomTypeSet(symptomType);
                    ctx.SaveChanges();
                }
                catch (Exception ex)
                {
                    ...
                }
            }

            return symptomType;
        
        }

29.06.2009 - 20:13 Uhr

Ist zwar schon etwas her. (Bin noch Student). Bin über die Antwort gestolpert:
PresentationModel with datatemplates in compositewpf prism sample

private static void RegisterResources()
{
ResourceDictionary dictionary = new ResourceDictionary();
dictionary.Source = new Uri(“pack://application:,,,/Commanding.Modules.Order;Component/OrdersResourceDictionary.xaml”);
Application.Current.Resources.MergedDictionaries.Add(dictionary);
}

Gruß Timo

03.06.2009 - 18:00 Uhr

Habe Bing jetzt als meine Startseite festgelegt.

Gruß Timo

18.05.2009 - 14:21 Uhr

Das bei so einem Projekt von dem Benutzer eine Lernkurve vorrausgesetzt wird, ist ganz klar. Überleg mal wie es bei google war, da hat man auch erst lernen müssen wie man effizient sucht.

Gruß Timo

07.05.2009 - 15:39 Uhr

Im allgemeinen vergleicht man Äpfel und Birnen. Aber wer große Töne spuckt muss auch Kritik einstecken können. Sich selber dem Vergleich mit Google auszusetzen ist eine sicher wohl überlegte (Marketing-)Entscheidung. Und das man da natürlich nicht gleich mit offenen Armen empfangen wird, ist auch klar.

Die Frage die der Spiegelartikel bei mir aufwirft ist: Wozu brauch ich WolframAlpha wenn ich google habe? Das wird sicher nicht der Sinn des Autors gewesen sein, als er rein objektiv diesen Artikel geschrieben hat.

Es bleibt abzuwarten, ob WolframAlpha nun in gewissen bereichen einen groß genugen Mehrwert gegenüber google/wiki darstellt. Sicher wird dies nicht der Fall sein wenn man nach ganz allgemeinen Sachen sucht. Da stehen einfach mehr Inhalte im Netz, als jemals von einem Unternehmen validiert wiedergegeben werden könnten. Deswegen kann ein Mehrwert nicht im Umfang von WolframAlpha liegen, sondern nur in der Qualität der Wiedergabe und in der Suche( und vielleicht auch nur in gewissen Bereichen).

Gruß Timo

06.05.2009 - 14:55 Uhr

Ich will nochmal etwas genauer werden, da mein letztes Post nicht ganz eindeutig war.

Also die Adresse: www.betfair365.com könnte nach meinem Wissen von betfair angefochten werden. Da es nach meinem Wissen nicht erlaubt ist eine Domain anzumelden, die nur auf einer anderen Schreibweise beruht wie ein geschütze Marke.
Beispiel: www.gooogle.de wäre nicht erlaubt. Ob nachgestelltes 365 ausreichend ist kann ich nicht sagen.
Das Domain-Recht ist aber ein nicht geprüftes Recht. Also wenn keiner klagt ist alles OK. Wie es im Internationalen aussieht kann ich aber nicht sagen. Marken können National, aber auch International angemeldet werden. Und wie es dann in den Details mit den Domains im internationalen aussieht, ist mir auch mehr als unklar. Das ganze ist nicht ganz einfach. Deswegen immer jemanden Fragen, der sich damit richtig beschäftigt.

Anbieter die mit Domains handeln, halten zwar eine Domain aber keine Marken. Deswegen könnte ich mir vorstellen, dass jemand der nach der Registrierung der Domain eine Marke(Wortmarke oder kombination Wort-/Bildmarke) anmeldet. Die Domain anfechten kann. Aber es kann natürlich sein, dass es so ist das die Rechte an der Domain bestehen bleiben, da sie vorher da waren.

Auf jedenfall ist bei der Registrierung einer Domain, auch eine Prüfung der Markendatenbanken nötig. Sonst kann es sein, dass du die Seite 1 Jahr betreibst und dann kommt jemand mit seiner Marke und nimmt dir die Domain weg. Am besten auch gleich zumindestens eine Wortmarke anmelden. Dürfte zwische 100-1000€ kosten(International kann es teurer werden). Genau beziffern kann ich es aber nicht.

Gruß Timo

06.05.2009 - 12:49 Uhr

Ich bin da nicht ganz informiert, aber vielleicht sind die Domains auch anfechtbar. Es gibt ja auch DomainRecht,MarkenRecht und so. Man darf zum Beispiel keine Domain anmelden, die mit dem Markenrecht in Konflikt steht. Da Marken benutzt werden müssen, haben solche Anbieter keine Markenrecht. Wenn du jetzt nachträglich eine Wortmarke anmeldest, könnte ich mir vorstellen, dass du auch die Domain anfechten kannst. Eine Anfrage bei Leuten die sich mit dem Thema auskennen könnte also lohnen, bevor du Abstriche bei dem Namen machen musst.

Gruß Timo

06.05.2009 - 10:13 Uhr

Danke, netter Link!
Also nach dem Bericht würde ich jetzt nicht darauf spekulieren, dass Google Angst hat. Denn die Suchanfragen, die Wolfram Alpha wirklich in einer so viel besseren Qualität bearbeitet, als Google, sollten bei dem Suchanfragenaufkommen insgesamt unter 1% Fallen. Man sollte trotzdem bedenken, Ideen entwickeln sich weiter.

Gruß Timo