Laden...

Forenbeiträge von HiJack82 Ingesamt 19 Beiträge

08.11.2017 - 12:06 Uhr

Super, danke!
Das hatte ich gesucht.

Leider verhält sich das bei mir ziemlich blöd.

Einmal schrumpft das Fenster bei MouseLeave in der Höhe zurück und manchmal bleibt es einfach in voller Höhe dargestellt. Manchmal wird es aber auch gar nicht ausgeklappt. Das Animieren der Width Eigenschaft passt eigentlich immer.

Wie kann es denn zu so einem nicht deterministischen Verhalten kommen?

Ich hätte die Realisierung einer einfachen Fensteranimation eher als Stärke von WPF gesehen. Das Verhalten ist für mich aber sehr "strage".


<Window x:Class="AppBar.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:AppBar"
        mc:Ignorable="d"
        Title="AppBar" Height="2" Width="1520" ResizeMode="NoResize" Topmost="True" AutomationProperties.Name="AppBar"
        WindowStyle="None" WindowStartupLocation="Manual" Left="200" Top="0">
       
    <Window.Style>
        <Style TargetType="{x:Type Window}">
            <Style.Triggers>
                <EventTrigger RoutedEvent="MouseEnter">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Width" To="1920" />
                            <DoubleAnimation Storyboard.TargetProperty="Left" To="0"/>
                            <DoubleAnimation Storyboard.TargetProperty="Height" To="200" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>

                <EventTrigger RoutedEvent="MouseLeave">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="Width" To="1520" />
                            <DoubleAnimation Storyboard.TargetProperty="Left" To="200" />
                            <DoubleAnimation Storyboard.TargetProperty="Height" To="2" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Style.Triggers>
        </Style>
    </Window.Style>
    
    <Grid Background="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}">

    </Grid>
</Window>


08.11.2017 - 11:25 Uhr

Ich versuche das MainWindow meiner Anwendung über XAML zu animieren.
Konkret versuche ich das MainWindow bei MouseOver über XAML zu vergrößern und zu verschieben.

Auf der Suche nach Beispielen und Tutorials wurde ich leider nicht fündig. Alle Beispiele beziehen sich auf das Animieren von Elementen innerhalb des MainWindows.

Kann es sein, dass das MainWindow über XAML gar nicht selbst animiert werden kann?

07.06.2017 - 13:55 Uhr

Puhh, jetzt bin ich glaube ich fertig:

So steht die Expression jetzt. Scheint jetzt auch meine Anforderungen zu erfüllen.
\b^START\s\b(?=(\w|\s){7}.W)\w+\s*.W(\s)(\bEND\b|\bFINISH\b)

Das war eine schwere Geburt. Vielen Dank an alle beteiligten.

Mit RegEx muss man sich einfach eine Weile beschäftigen. Hoffentlich gehts beim nächsten mal leiter von der Hand...

07.06.2017 - 13:08 Uhr

@herbivore

Andere tun das nicht und wollen nur andere Leute einspannen, um ohne eigenen Aufwand eine funktionierende Lösung zu bekommen.

Da hast Du natürlich schon recht. Aber schau mal, wie wenig Fragen ich in der langen Zeit im Forum gestellt habe. Ich gehe in der Regel immer wie folgt vor:

  • vorhandene Bücher
  • Google
  • Foren lesen
    --> Frage im Forum stellen

Manchmal steht mal halt auch bei vermeintlich einfachen Dingen so richtig auf dem Schlauch...

So wie auch ich leider immer noch 😦

Ich habe jetzt folgende Expression:
\b^START\s\b(?=(\w|\s){7})\w+\s*.W(\s)(\bEND\b|\bFINISH\b)

Die Funktioniert bis auf eine Ausnahme (hoffe es ist wirklich nur eine). Der Teilstring "HELLO .W" darf bei mit mindestens 9 Zeichen lang sein. Die maximale länge wird aber scheinbar nicht richtig geprüft. Hat jemand eine Idee, was ich an meinem Ausdruck noch verbessern kann?

07.06.2017 - 11:51 Uhr

Danke Sir Rufo. Jetzt kapiere ich auch, was der herbivore gemeint hat.
Vielen Dank!

Es ist doch immer am besten einfach die Lösung hinzuschreiben. Das kann man dann systematisch analysieren.

^(?=.{9}$)\w+\s*.W$

Jetzt habe ich noch ein Problem mit dem gesamten Ausdruck:
(Soweit ich bisher verstanden habe mit dem lookahead)

Beispiel:
START HELLO .W END
oder
START HELLO .W FINISH

Expression:
\b^START\s\b(?=.{9})\w+\s*.W\s(\bEND\b|\bFINISH\b)

Ich möchte eigentlich nur HELLO .W auf die Länge von 9 Zeichen prüfen. Das funktioniert aber mit meiner oben gezeigten Expression noch nicht richtig. Muss ich da noch ein $ setzten, oder?

Übrigens, das ^ bei START habe ich drin, weil START der erste String in der Zeile ein muss. Ohne dieses Zeichen werden führende Leerzeichen akzeptiert. Das möchte ich aber nicht. Habe ich das dann so richtig gemacht?

07.06.2017 - 11:14 Uhr

@herbivore:
Das war auch mein erster Gedanke. Das ist leider falsch.
Diese Abfrage würde "ABC DEF.W" erlauben. Leerzeichen dürfen aber nur am Ende und vor dem .T vorkommen (müssen aber nicht).

07.06.2017 - 11:10 Uhr

Vielen Dank Paladin007. Deine Tipps sind wirklich sehr hilfreich!
Die Klammern habe ich noch drin, weil man so im https://regex101.com/ schön die resultate der einzelnen Gruppen sieht. Das hätte ich dann später auch wieder entfernt.

Was Du tust: Du verlangst einmal \w und danach entweder \w oder \s in beliebiger Reihenfolge und maximal 6 mal.

Jetzt kommen wir der Sache schon näher. Das kann ich so nicht benutzen. Wenn ich nach \w 6 mal \w oder \s zulasse würde ABC DEF.W auch akzeptiert werden. Das darf ich aber nicht akzeptieren.

07.06.2017 - 09:48 Uhr

Hallo noch mal,

wie im letzten Beitrag erwähnt. Die Länge ist nicht das Problem.

Vielleicht kannst Du mit einfach mal das Pattern hinschreiben, dann kann ich es mit https://regex101.com/ prüfen und hoffentlich auch verstehen.

Ich habe jetzt folgendes:

(^(?=.{9}$))(\w)**(\w|\s){0,6}**(\.W)

Ich glaube im Fett gedruckten Teil liegt noch mein Problem.

Das deckt aber immer noch nicht die Einschränkung ab, dass Leerzeichen nur am Ende (also vor dem .W) zulässig sind.

Das würde also fälschlicherweise auch als richtig bezeichnet.

HAL LO.W

07.06.2017 - 07:48 Uhr

Hallo zusammen,

erstmal vielen lieben Dank für all die Mühe. Es ist aber leider noch nichts passendes dabei.

\s* kann ich ja nicht verwenden, weil ich nicht beliebig viele Leerzeichen zulassen kann.
Ich versuche nochmal mein Kernproblem besser zu beschreiben.

  • Der gesamte String darf aus 9 Zeichen bestehen.
  • Die letzten beiden müssen immer .W sein
  • Das erste muss \w sein (danke Palladin00)

--> Jetzt kommt das eigentliche Problem:
Jetzt sind noch 6 Zeichen in der Mitte übrig.
\s* darf ich nicht machen weil nicht beliebig viele Leerzeichen vorkommen dürfen
\s{n} kann ich auch nicht machen, weil ich n nicht kenne.

Das Problem ist also, dass ich 6 Zeichen habe die mit \w anfangen und eventuell (muss nicht sein) mit \s enden.** Ich weiß nicht wie viele Zeichen und wie viele Leerzeichen da kommen. Ich weiß nur, dass es an der Stelle insgesamt 6 sind und Leerzeichen nur am Ende erlaubt sind. **Sorry, aber das ist echt schwierig zu erklären.

@Palladin007: Eigentlich ist RexEx nicht notwendig. Aber ich bewundere das Problem 😃 und bin extrem neugierig ob das mit RegEx überhaupt lösbar ist.

@Herbivore: Mein Problem ist, dass ich die ganzen Tutorials bereits gelesen habe, mein Problem damit aber nicht lösen kann.

06.06.2017 - 15:04 Uhr

Hallo zusammen. Ich versuche gerade schon eine Weile mit Hilfe von Google folgendes zu realisieren:

Ich habe folgenden String:
"HALLO .W"

Folgendes ist zu prüfen:

  • Die Größe des Strings müssen genau 9 Zeichen sein
  • Die Letzten beiden Zeichen müssen immer .W sein
  • Das Erste Zeichen muss [A-Za-z0-9] sein
  • Dazwischen dürfen 6 mal [A-Za-z0-9] oder Leerzeichen sein
    --> wobei nur am Ende (also vor dem Punkt) Leerzeichen erlaubt sind
    --> und nicht zwingend ein Leerzeichen dabei sein muss

Beispiel für erlaubt:


"HALLO  .W"
"H      .W"
"HALLO12.W"

Beispiel für verboten:


"  HALLO.W"
"H.W"

Das kann doch eigentlich nicht so schwer sein, aber ich komme leider nicht drauf.
Ich weiß z.B. nicht wie ich definieren kann, dass ich beliebig viele Leerzeichen haben darf, aber diese nur am Ende stehen dürefen.

Hat vielleicht jemand von den RegEx Cracks einen Tipp für mich?

28.10.2015 - 11:07 Uhr

Das war auch mein erster Gedanke, hatte aber nicht funktioniert.
Jetzt habe ich es gerade noch mal probiert, jetzt gehts... komisch.

Danke.

28.10.2015 - 10:43 Uhr

Hallo Freunde,

ich habe ein vermeintlich simples Problem für das ich einfach keine Lösung finden kann.

Ich habe in einer Klasse ein Event implementiert. Jetzt möchte ich in dieser Klasse wissen, ob es abonniert wurde oder nicht.

Hat jemand eine Idee wie man das herausfinden kann?

07.10.2015 - 15:47 Uhr

Im Prinzip geht es genau darum.
Ich möchte das was die Interopt Schicht aus den unmanaged COM properties, methods and events macht prüfen.

Z.B. eine Methode in der COM DLL "GetFile(string fileName)" über die Interopt schicht aufrufen und prüfen ob das was in meinem C++ ATL Client noch funktioniert hat auch hier geht.

06.10.2015 - 15:00 Uhr

Hallo Kollegen,

in der MSDN habe ich folgenden Artikel gefunden:
https://msdn.microsoft.com/en-us/library/dd260137(v=vs.100).aspx

Dort wird beschrieben, wie man einen UnitTest für eine DLL oder EXE Datei erstellt.

Ich habe jetzt eine unmanaged C++ ATL COM DLL die in Verbindung mit der .NET Interoptschicht immer wieder Schwierigkeiten macht. Jetzt würde ich gerne einen UnitTest gegen diese COM DLL erstellen. Dummerweise muss man beim Erstellen des UnitTests ein Assembly angeben (exe oder dll). Wenn ich versuche die COM DLL hier einzubinden bekomme ich einen Fehler angezeigt:

One or more of assemblies you selected could not be loaded. Please check those assemblies are valid and try again.

Hat jemand eine Idee, was ich machen muss?

28.09.2015 - 14:29 Uhr

Ich suche schon eine Weile eine Möglichkeit alle in Windows registrierten COM Komponenten aufzulisten. Gibt es denn da wirklich gar nichts in .NET?

04.09.2015 - 15:40 Uhr

Danke, dass war sehr hilfreich!

04.09.2015 - 15:33 Uhr

Puh, jetzt hab ich endlich was gefunden.


int HResult = Marshal.GetHRForException(ex);

Jetzt weiß ich nur nicht, ob ich das in einem Try Catch abfragen muss. Gibt es vielleicht irgendwelche Exceptions ohne HRESULT?

04.09.2015 - 14:36 Uhr

Vielen Dank schon mal für die Auskunft. Das ist ja hoch interessant.
Ja genau, ich bin auf VS2010 beschränkt. Das bietet mir nur .NET 4.0

Mit dem Link komme ich nicht klar. Mit Type.GetType() bekomme ich die Properties der System.Exception Klasse. Die kann ich aber auch im Object-Browser nachlesen. Was ich brauche ist der Int32 Wert des HResults. Wie ich da ran komme ist mir immer noch total unklar.

Kann mir vielleicht jemand einen Code-Schnippsel schicken?
Ich hab mich schon wund-gegoogelt, ich find einfach nix zu dem Thema. Vielleicht suche ich mit den falschen Begriffen...

04.09.2015 - 12:39 Uhr

Hallo zusammen,

ich habe einen Fall, bei dem ich den HResult Wert aus einer System.Exception auslesen muss. Leider ist diese Property (get private).

Kennt jemand einen guten Weg an den HResult Wert zu kommen?