Laden...
C
CoderboyPB myCSharp.de - Member
Softwareentwickler Paderborn Dabei seit 09.01.2008 327 Beiträge
Benutzerbeschreibung

Forenbeiträge von CoderboyPB Ingesamt 327 Beiträge

08.06.2020 - 18:27 Uhr

Also:
Bei der App handelt es sich um die Visual Studio Vorlage für eine Blazor App, für welche ich dann im zweiten Auswahlschritt die Option Webassembly verwende.

Ich ändere an der App nichts, es geht alleine um das erfolgreiche publishing und Hosting im IIS.

Dann publishe ich die App in dem ich die Option Folder wähle.

Was ich über Webassembly im Allgemeinen weiß, nachdem ich mich mal mit der Funktions- und Nutzungsweise (nicht ihrer Programmierung) auseinander gesetzt hatte, da ich im Unklaren war, WIE ich sie einsetze, ist, dass es eine *.wasm Datei ist, welche via eines Javascript Codes geladen und damit ihre Funktionen als JS Funktionen verfügbar gemacht werden.

Also erwarte ich im publish Folder in etwa folgendes:

  • eine html Startseite
  • eine .wasm Datei, welche die Funktionalität enthält
    mindestens eine JS Datei, die die WebAssembly lädt und die Funktionslogik der SPA enthält, alternativ kann das auch in zwei Dateien gesplittet werden.
  • die statischen Dateien wie CSS oder Bootstrap, Images, etc

Das finde ich (fast) so im <Publish>/Projektname/dist Ordner.

Aber oberhalb im Publish Ordner sind noch etliche DLLs, welche ich nicht brauche. Nochmal, ich kopiere nur den Inhalt von dist in den IIS.

Und meine Frage reduziert sich jetzt darauf, was soll ich mit diesen DLLs, warum beschränkt sich das Publishing nicht auf alleine die Files, die der ganz normale Webserver braucht? Das ist alles ...

08.06.2020 - 13:16 Uhr

Ich habe doch den Publish Befehl benutzt, nicht in der Konsole aber in Visualstudio: Rechtsklick auf den Projektnamen, dann auf 'Veröffentlichen'.
Oder ist das nicht dasselbe?

Hier habe ich dann das veröffentlichen in einen Folder gewählt, und einen auf dem Desktop gewählt (reine Bequemlichkeit, hätte auch woanders hin publishen können)

Diesen Inhalt habe ich dann ins physikalische Verzeichnis der IIS Webseite kopiert.
Statt dessen gehört da aber nur der Inhalt aus dem Unterverzeichnis 'dist' rein.

Deshalb war meine Frage, wofür sind im Rootverzeichnis des Publish Folders all die ganzen DLL Datein, die man ja eigentlich nicht braucht (bzw. scheinbar doch, sonst wären sie nicht dort, aber wozu nun?)

Was Blazor Webassembly ist, und was der Unterschied zu Blazor Server ist, ist mir eigentlich klar, nur wie gesagt, ich verstehe den Overhead nicht, denn eine gepublishte Blazor Webassembly App sollte doch eigentlich nur noch aus statischen Dateien bestehen.

übrigens bekomme ich, wenn ich die erzeugte index.html anklicke und damit die Seite auf einem Filesystem ausführe folgende Fehlermeldung:

Loading...
An unhandled error has occurred. Reload ???

Auffem IIS Server aber funktioniert es.

08.06.2020 - 05:44 Uhr

Vorweg, ich habe es hinbekommen, ich habe meine App auf in einen Ordner auf dem Desktop gepublished.

den Inhalt dieses Ordners habe ich dann in den physikalischen Webseiten Ordner vom IIS kopiert, und es funktionierte nicht.

Dann habe ich den Inhalt von <Desktop><PuplishFolder>/AppName/dist in den physikalischen Ordner kopiert, und dann funktionierte es.

Meine Frage nun:
Wofür sind die ganzen DLLs im obersten Publish Ordner, wenn ich doch nur den Inhalt aus 'dist' brauche?

Finde das ziemlich verwirrend, zumal ich ja eigentlich auch sowas wie im dist Ordner direkt als Publish Ordner erwartet hatte ...

  1. Frage:
    Das was da im dist Ordner dann ist, braucht doch keine ASP NET Core Unterstützung, das müsste doch auch auf einem einfachen Apache Server (XAMP) laufen, oder habe ich da etwas falsch verstanden?
27.04.2020 - 13:12 Uhr

Puh CoderBoyPB, alles Gute Dir!

Danke, habe die Panik Phase hinter mir, und fühle mich jetzt deutlich besser, vor allem im Dialysezentrum wurden einige Schutzmaßnahmen eingeführt, wie zum Beispiel das Fiebermessen direkt am Eingang, wo dann gegebenenfalls entschieden wird, was zu tun ist. Heute morgen musste ich selber 'nachsitzen', weil meine Temperatur schwankte, aber war kein Drama, letztendlich schützen solche Maßnahmen ja auch mich selbst, wenn andere infiziert sein sollten.

Einkaufen gehe ich nur noch kurz vor Ladenschluss, wenn die Geschäfte leer sind, und Taxi zur Dialyse fahre ich schon seit dem 16. März nicht mehr, da ist mir der Fahrer ein zu großer potentielle Infektions Hub ...
Glücklicherweise wohne ich in fußläufiger Entfernung (ca. 15 Min)

Natürlich begrüße ich die Maskenpflicht, hätte viel früher kommen müssen, kann nicht sein, dass bis Freitag noch Taxifahrer ohne Masken Diaylsefahrten gemacht und Hochrisikopatienten (Nicht nur Dialyse sondern auch alt) ungeschützt gefahren haben, das geht einfach gar nicht ...

Ansonsten versuche ich die Zeit sinnvoll zu nutzen.
OK, ich lese viel Disneys Lustige Taschenbücher (digital, bin bei Nummer 264, lese aber auch schon mein komplettes Leben)

Ansonsten viele Mathevideos geschaut, so dass ich jetzt endlich das SIR Model (Infektionskurven) verstanden habe, zu dem wollte ich jetzt mit Blazor und React anfangen.

An Langeweile leide ich also nicht 😉

27.04.2020 - 01:29 Uhr

Ich persönlich hatte Anfang Februar nach über 9 Jahren Arbeitslosigkeit wenigstens wieder nen 450 € Job als Entwickler bei 11 Wochenstunden (Kommt dann genau auf den gesetzlichen Mindestlohn raus)

Als ein Arbeitskollege unter anderem mir noch weiß machen wollte, dass Covid nicht zu uns kommen würde, und auch nichts anderes als eine 'normale' Grippe sei, war er damit bei mir auch erfolgreich.

Am Donnerstag den 12.3. verabschiedete ich mich dann ins Wochenende und ging zu dem Zeitpunkt noch davon aus, Dienstags wieder zu kommen (arbeitete Dienstags und Donnerstags, meinen dialysefreien Tagen), aber dann kam der Freitag der 13., ein Datum, über das ich vorher noch gewitzelt hatte:

Unser Chef hielt ne allgemeine Ansprache, die ich aber verpasste, da ich zu Hause war, in der ein Teil, unter anderem auch ich (Risikogruppe) ins Homeoffice geschickt wurden.

Aber an diesem Tag wurde mir erstmals klar, dass wir auch gefickt werden und ich beschloss meine Eigenquarantäne: Keine Kontakte mehr als unbedingt notwendig sind ...

Tatsächlich kam ich dem Kontaktversuch und dem Lockdown nur zuvor.

Aber worauf ich hinaus wollte:
Leider war ich noch nicht ausreichend eingearbeitet, um Homeoffice machen zu können, und da ich nicht ins Büro zurück kann, habe ich meinen Vertrag jetzt erstmal aussetzen lassen.

Jetzt kommt das Monatsende, ich bekomme keine 450 € mehr, und obwohl ich bereits am 2.4. dem Jobcenter die Aussetzung meines Vertrages mitgeteilt habe, wohl erstmal weiterhin 280 € abgezogen, bis mein Antrag bearbeitet wurde ...

Da ich nicht vor Jahresende mit einem Impfstoff rechne, rechne ich mit ca. 1700 €, die selbst mir Covid kosten wird. (OK, ich weiß, dass es andere noch ganz anders treffen wird)

26.03.2020 - 10:49 Uhr

Alter, ich habs, ich muss "and " durch "" ersetzen, sonst bekomme ich zwei Leerzeichen ...

Ker, was bin ich blöd ... Facepalm

26.03.2020 - 10:41 Uhr

Hallo, stehe gerade nen bissel auffem Schlauch:

Schreibe für Codewars an einem Programm, welches Zahlen in englisch von 1 bis 1 Million (als Wörter) in Strings umwandelt.

Nun soll das 'and' optional sein, und ich würde es gerne rauslöschen, bevor ich den String bearbeite:


s = s.Replace("and", ""); // remove optional 'and'
var parts = s.Split(' ');

liefert mir für four hundred and fifty-two

statt drei Teile vier Teile, nämlich

"four", "hundred", "" , "fifty-two"

Was mache ich da falsch, wie bekomme ich das leere Feld weg?

29.01.2020 - 23:54 Uhr

Alles klar Danke 😃

Aber davon ab, ist es dann nicht komplett sinnfrei von Microsoft den virtuellen Folder 'MyComputer' in die SpecialFolders Auflistung überhaupt als leeren String aufzunehmen?

29.01.2020 - 22:04 Uhr

Ich würde gerne auf mein angeschlossenes Windows Phone zugreifen, da ich einige Dateien dort drauf manipulieren möchte.

Da es mit System.Environment.GetLogicalDrives() nicht gefunden wird, wollte ich mich, ausgehend vom 'Ordner' 'Dieser PC' dann zu dem Verzeichnis auf dem Telefon hin'hangeln'.:

Dieser PC\Windows phone\Phone\Music, so wird es im Windows Explorer angezeigt.

Aber wie komme ich nun dort drauf, dass Environment.SpecialFolders.MyComputer nur einen Leerstring liefert, habe ich auch schon entdeckt, und dass ich über die CLSID zugreifen muss, aber WIE mache ich das, alle Versuche schlugen bisher fehl ...

Mit anderen Worten, ich suche nach einem String, den ich an Directory.GetFiles() übergeben kann.

28.01.2020 - 16:28 Uhr

Wollte mir vorhin jemand erzählen, und als ich ihn fragte, was denn dann gerade aktueller Stand wäre meinte er Angular.

Nun gut, aber das sind doch zwei völlig verschiedene paar Schuhe:
WPF ist das Standardframework für Desktop Apps, und Angular für Single Page Anwendungen in Browsern ...

Oder nicht?

Oder hat er WPF mit Windows Forms verwechselt?

29.12.2019 - 13:34 Uhr

Danke es funktioniert, auch wenn ich nicht verstehe warum:
Denn eigentlich haben Border und Inhalt, in diesem Fall das Rechteck doch gar keinen Bezug mehr zueinander, sondern liegen (im Grid) übereinander.

20.12.2019 - 15:10 Uhr

Ich habe folgende Situation (Siehe Screenshot)
Wie erreiche ich, dass das Rectangle auch an den gerundeten Ecken geclippt wird?
Gibt es da ne Möglichkeit, oder bleibt da nur der Weg über eine Rectangle Geometry als Clipping Mask?


<Grid>
        <Border Background="Yellow" Margin="50" CornerRadius="90" ClipToBounds="True">
            <Rectangle Opacity="0.3" Width="400" Height="300" Fill="Red" Margin="-200 0 200 0"/>
        </Border>
</Grid>

12.12.2019 - 19:37 Uhr

MVVM habe ich inzwischen komplett verstanden, bin dabei auch auf Caliburn.Micro gestoßen, hatte mich überzeugt

12.12.2019 - 19:24 Uhr

Lernen, Lernen, Lernen ...
Praktische Gehversuche:

Am Anfang ein eigenes überschriebenes Window Chrome

Das Beispiel der überschriebenen TextBox stammt aus diesem Artikel als Beispiel für die Verwendung einer Attached Property:
https://www.codemag.com/article/1405061

Und aus dem bereits genannten YT Video stammt die BaseAttachedProperty, mit welcher ich dann die normale A-Propperty ersetzt habe.

Nen Sinn steckt da tatsächlich nicht hinter. Außer wie gesagt halt, der Lernprozess, denn ich möchte jeden Tag etwas besser werden. Das ist mein Ziel.

Und das Hauptziel ist, ich will wieder arbeiten, leider ist es schwer mit meinen gesundheitlichen Einschränkungen, aber ich denke ich habe gute Chancen bei meinem Ex Arbeitgeber auf Minijob Basis unterzukommen.

12.12.2019 - 18:54 Uhr

xaml ja, die BaseAttachedProperty nicht

Aber es lag wohl tatsächlich an den Namespaces, aber beide Namespaces existierten ja. Bissel komisch.
Hauptsache es geht jetzt.

Jetzt geht es an den nächsten Schritt: Den Teil mit den Events verstehen. Kann zwar Events, aber dieses rekursive generische macht es etwas komplizierter 😃

12.12.2019 - 16:04 Uhr

Zur Erklärung: der Code enthält ein Window Chrome, und das überschriebene Template der TextBox stammt aus einem anderen Beispiel, ich habe die jetzt drinnen gelassen, um den Code wirklich hier 1:1 wieder zu geben.


<Window x:Class="Facetto.Word.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:my="clr-namespace:Fasetto.Word"
        mc:Ignorable="d"
        AllowsTransparency="True"
        WindowStyle="None"
        Title="MainWindow" Height="450" Width="800">
    <WindowChrome.WindowChrome>
        <WindowChrome
            GlassFrameThickness="0"
            ResizeBorderThickness="4"
            CaptionHeight="36"
            />
    </WindowChrome.WindowChrome>
    <Window.Template>
        <ControlTemplate TargetType="Window">
            <Grid>
                <Border Padding="10"
                        Background="Blue"
                        CornerRadius="30"
                        x:Name="border"
                        >
                </Border>
                <ContentPresenter>
                    <ContentPresenter.OpacityMask>
                        <VisualBrush Visual="{Binding ElementName=border}"/>
                    </ContentPresenter.OpacityMask>
                </ContentPresenter>
            </Grid>
        </ControlTemplate>
    </Window.Template>
    <Grid>
        <TextBox Text="foooooo" Width="200" Height="50"
                 my:SecurityIdProperty.Value="123"
                 >
            
            <TextBox.Template>
                <ControlTemplate TargetType="TextBox">
                    <Grid Background="White">
                        <TextBox Text="{TemplateBinding Text}" FontSize="30"/>
                        <TextBlock 
                            Text ="{TemplateBinding my:SecurityIdProperty.Value}"
                            VerticalAlignment="Bottom"
                            HorizontalAlignment="Right"/>
                    </Grid>
                </ControlTemplate>
            </TextBox.Template>
        </TextBox>

    </Grid>
</Window>

Und hier der Screenshot mit dem doppelten Namespace:
Bild entfernt - Coffeebean [Hinweis] Wie poste ich richtig?, Punkt 6.1: Bilder als Dateianhang hochladen

12.12.2019 - 14:39 Uhr

Komischerweise taucht der Namespace in der Liste beim setzen mit xmlns: doppelt in der Liste auf, wenn ich den zweiten wähle klappt es, beim ersten nicht. Ziemlich komisch. Scheint echt ein Fehler von VS zu sein.

12.12.2019 - 13:23 Uhr

ja, der Namespace ist selbstverständlich eingetragen.
Das ist ja das Unverständliche.

12.12.2019 - 08:37 Uhr

Nachfolgenden Code habe ich aus diesem Video (bzw. dem zugehörigen GitHub Repository):
https://www.youtube.com/watch?v=trR5RQGEteM

Die Idee dahinter ist, Att. Prop. mit einer Zeile erzeugen zu können:

z.B.


public class SecurityIdProperty : BaseAttachedProperty<SecurityIdProperty, string> { }

Angewendet werden soll das dann z.B. so:


<TextBox local:SecurityIdProperty.Value="123" ... />

Jetzt aber kommt das, was ich nicht verstehe: Zum einen kennt XAML SecurityIdProperty nicht, statt dessen aber bietet mir die 'Intelligence' local:BaseAttachedProperty`2 an.

Vor allem das `2 lässt mich neugierig zurück ...

Das ganze ist ja nicht meine Idee, der Programmierer im Video macht es aber genau so ...

Irgendjemand ne Idee, was mir VS da sagen möchte?


public abstract class BaseAttachedProperty<Parent, Property>
        where Parent : BaseAttachedProperty<Parent, Property>, new()
    {
        #region Public Events

        /// <summary>
        /// Fired when the value changes
        /// </summary>
        public event Action<DependencyObject, DependencyPropertyChangedEventArgs> ValueChanged = (sender, e) => { };

        #endregion

        #region Public Properties

        /// <summary>
        /// A singleton instance of our parent class
        /// </summary>
        public static Parent Instance { get; private set; } = new Parent();

        #endregion

        #region Attached Property Definitions

        /// <summary>
        /// The attached property for this class
        /// </summary>
        public static readonly DependencyProperty ValueProperty = DependencyProperty.RegisterAttached("Value", typeof(Property), typeof(BaseAttachedProperty<Parent, Property>), new UIPropertyMetadata(new PropertyChangedCallback(OnValuePropertyChanged)));

        /// <summary>
        /// The callback event when the <see cref="ValueProperty"/> is changed
        /// </summary>
        /// <param name="d">The UI element that had it's property changed</param>
        /// <param name="e">The arguments for the event</param>
        private static void OnValuePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            // Call the parent function
            Instance.OnValueChanged(d, e);

            // Call event listeners
            Instance.ValueChanged(d, e);
        }

        /// <summary>
        /// Gets the attached property
        /// </summary>
        /// <param name="d">The element to get the property from</param>
        /// <returns></returns>
        public static Property GetValue(DependencyObject d) => (Property)d.GetValue(ValueProperty);

        /// <summary>
        /// Sets the attached property
        /// </summary>
        /// <param name="d">The element to get the property from</param>
        /// <param name="value">The value to set the property to</param>
        public static void SetValue(DependencyObject d, Property value) => d.SetValue(ValueProperty, value);

        #endregion

        #region Event Methods

        /// <summary>
        /// The method that is called when any attached property of this type is changed
        /// </summary>
        /// <param name="sender">The UI element that this property was changed for</param>
        /// <param name="e">The arguments for this event</param>
        public virtual void OnValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) { }

        #endregion
    }

12.12.2019 - 01:55 Uhr

Hallo, ich habe aus dem Netz folgenden Beispiel Code für eine Attached Property:


public class Ex : DependencyObject
{
    public static readonly DependencyProperty
        SecurityIdProperty =
        DependencyProperty.RegisterAttached(
              "SecurityId", typeof(string), typeof(Ex),
        new PropertyMetadata(""));
    public static string GetSecurityId(
        DependencyObject d)
    {
        return (string) d.GetValue(SecurityIdProperty);
    }
    public static void SetSecurityId(
        DependencyObject d, string value)
    {
        d.SetValue(SecurityIdProperty, value);
    }
}

Im Grunde genommen ist der Code für mich klar, aber eins verstehe ich nicht:
Wofür leitet der Ex von DependencyObject ab?
Irgendwie schien mir das unnötig und ich habe es einfach mal OHNE probiert und es funktioniert.

Hier ist übrigens die Quelle:
https://www.codemag.com/article/1405061/XAML-Magic--Attached-Properties

20.11.2019 - 13:44 Uhr

Ja, und VS 2017 ist der selbe Müll in Grün:

Fehlermeldung:
Severity Code Description Project File Line Suppression State
Error DEP6200: Bootstrapping failed. Device cannot be found. SmartDeviceException - Deployment failed because no device was detected. Make sure a device is connected and powered on. [0x80131500] WindowsPhoneApp

Auch so komplett nichts sagend, denn das Handy ist über USB verbunden und ist im Entwicklermodus.

20.11.2019 - 12:51 Uhr

So, habe jetzt alle vier Kombinationen aus Debug, Release x ARM, ARM64 ausprobiert, das sagt Visual Studio (Handy ist im Entwicklungsmodus):

Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
Fehler DEP6957: Fehler beim Herstellen einer Verbindung mit dem Gerät "127.0.0.1" mithilfe universeller Authentifizierung. Bitte stellen Sie sicher, dass der richtige Remoteauthentifizierungsmodus in den Debugeinstellungen des Projekts angegeben wird. COMException - Es konnte keine Verbindung hergestellt werden, da der Zielcomputer die Verbindung verweigerte. (Ausnahme von HRESULT: 0x8007274D) [0x8007274D] WindowsPhoneApp

20.11.2019 - 12:35 Uhr

Schön wäre es, wenn es so einfach ginge.
Wie gesagt, der fragt in einem Dialog, ob er installieren soll, und dann passiert nichts ...

19.11.2019 - 15:59 Uhr

so ne Mischung aus allem, hat mich einfach richtig genervt dafür rund 2 Stunden verschwendet zu haben.

Wenn ich wenigstens ne appx hätte, von der ich weiß, dass sie funktioniert, so weiß ich nicht mal was Mist ist: meine App oder doch nur mein phone ...

19.11.2019 - 13:58 Uhr

Ich raffs nicht.
Was soll der Mist: Ich pack das appx aufs phone, klicke es an, ich werde gefragt, ob ich installieren will, und dann passiert NIX, NADA, NIET, statt dessen komme ich in eine Endlosschleife, wo ich immer wieder das Ding anlicken und 'installieren' kann ...

Kehr, ist es denn wirklich war, dass das programmieren von Apps leichter ist, als das sch... Ding aufs eigene Handy zu bekommen?

Und warum gibt es keine komplette Anleitung im Netz beginnend von einer einfachen Hello World Anwendung und wie man sie dann aufs Handy bekommt???

04.11.2019 - 14:58 Uhr

Das DataTEmplate hat ja ne DataType Eigenschaft, diese wird durch Binding gesetzt, und darauf hin dann entweder das DataTemplate mit der roten oder blauen View geladen.

Das DT ist also quasi die Verbindung vom ViewModel zur verwendeten View.

Aber wieso funktioniert das nicht im zweiten Beispiel mit der 'Fußgängermethode'

WO liegt der UNTERSCHIED???

Ah, ich hab's glaub ich:
Das Template wird gar nicht eingefügt, sondern nur der INHALT, ist es das?

04.11.2019 - 14:42 Uhr

So, habe mir die Links jetzt mal durchgelesen:
Das deckt sich eigentlich 1:1 mit dem, was ich bisher auch über DataTemplates wusste.
So weit so gut, aber was ich immer noch nicht verstehe:

Warum funktioniert:


<Window.Resources>
        <DataTemplate DataType="{x:Type viewmodels:RedViewModel}">
            <views:RedView />
        </DataTemplate>
        <DataTemplate DataType="{x:Type viewmodels:BlueViewModel}">
            <views:BlueView/>
        </DataTemplate>
    </Window.Resources>
    <Grid>
        
        <ContentControl Content="{Binding}" Grid.Column="1"/>
        
    </Grid>
</Window>

aber:



        <ContentControl Grid.Column="1">
            <DataTemplate>
                <views:BlueView/>
            </DataTemplate>
        </ContentControl>

nicht?

Das ist doch im Grunde genommen beides das Gleiche, nur dass das die View manuell zugewiesen wird, aber die Struktur ist doch dieselbe, warum wird die View also oben angezeigt, und im manuellen Beispiel nur die toString() Methode ausgegeben?

04.11.2019 - 12:29 Uhr

Gerade von der Dialyse nach Hause gekommen.
Ich sag jetzt erst mal Danke, und werde mir die Links mal zu Gemüte führen 😃

04.11.2019 - 05:37 Uhr

Hallo

Aus einem YT Tutorial habe ich folgendes Konstrukt, um die Views zu switchen:


<Window
:
xmlns:viewmodels="clr-namespace:ViewChanger.ViewModels"
xmlns:views="clr-namespace:ViewChanger.Views"
/>

<Window.Resources>
        <DataTemplate DataType="{x:Type viewmodels:RedViewModel}">
            <views:RedView />
        </DataTemplate>
        <DataTemplate DataType="{x:Type viewmodels:BlueViewModel}">
            <views:BlueView/>
        </DataTemplate>
</Window.Resources>

<Button Content="Red View" Click="RedView_clicked"/>
<Button Content="Blue View" Click="BlueView_clicked"/>

<ContentControl Content="{Binding}" Grid.Column="1"/>
</Window>

Die beiden Button Funktionen setzen leere ViewModels als DataContext:


private void RedView_clicked(object sender, RoutedEventArgs e)
        {
            DataContext = new RedViewModel();
        }

        private void BlueView_clicked(object sender, RoutedEventArgs e)
        {
            DataContext = new BlueViewModel();
        }

Die Views sind einfach nur leere UserControls mit einem farbigen Hintergrund.

Ich verstehe das jetzt so: Das ContentControl kann mit dem DatenTyp (Beispiel) RedViewModel nichts anfangen, und sucht dann in den Resources die mit dem zugehörigen Typ raus, was hier ein DataTemplate ist, und dieses enthält die View (UserControl) mit dem roten Hintergrund, so dass das ContentControl in rot erscheint.
Die Zwischenstufe mit dem DataTemplate wird verwendet, weil dieses eine DataType Eigenschaft hat.

Habe ich das soweit richtig verstanden?

Falls ja, warum, funktioniert folgendes nicht:


<ContentControl>
            <DataTemplate>
                <views:RedView/>
            </DataTemplate>
        </ContentControl>

Hier erhalte ich einfach nur 'System.Windows.DataTemplate' als Ausgabe, aber im Grunde genommen ist das doch auch nichts anderes, als die Variante oben, nur, dass ich die Werte direkt setze?

PS: Das die Überschrift Mist ist, weiß ich, aber wer ne bessere Idee hat, kann sie gerne editieren, mir ist nichts sinnvolleres eingefallen. Sorry.

11.10.2019 - 20:50 Uhr

So, noch mal gegoogelt (ist ja nicht so, dass ich nicht auch selber vorher suchen würde) und ich hab das hier gefunden:

Direkt der erste Screenshot:

https://docs.microsoft.com/en-us/visualstudio/designers/draw-shapes-and-paths?view=vs-2019

Das ist Blend for VS 2019 und die haben dort 6 Shapes.

11.10.2019 - 20:06 Uhr

Ist mir auch klar, dass das Programm inzwischen 'Microsoft Blend for Visual Studio', dennoch sollte mit Expression Blend klar sein, was ich meinte, wenn man 'GEZ' anstatt 'Rundfunkbeitrag' sagt, weiß ja auch weiterhin jeder, was gemeint ist ...

Also gut, stellen wir die Frage anders:

Ich habe bei Microsoft Blend for Visual Studio (2019 und auch 2017) nur zwei Shapes zur Auswahl, ist das normal in den neuen Versionen, wenn ja, kann man dagegen etwas machen, oder ist das eine generelle Limitierung der Free Version?

PS: Der Screenshot selber stammt aus einem schon älteren WPF E-Book.

11.10.2019 - 01:04 Uhr

Warum habe ich all die anderen Shapes, die man auf Screenshots im Web sieht, nicht?
Ist das eine Einschränkung der Free Version?

Oder gibt es eine andere Erklärung, und ich muss die erst runterladen? Wenn ja, wo?

02.10.2019 - 12:29 Uhr

Google und Facebook akzeptieren localhost.
Twitter dagegen nicht mal 127.0.0.1 ...

Alls Callback Url akzeptiert twitter auch localhost:xxxx/signin-twitter
Es ging um die reine Website URL der Anwendung.

Aber wie gesagt, konnte es mit tinyurl umgehen, und nachdem ich urch debuggen festgestellt hatte, dass Twitter keine Email Claims unterstützt und ich auf Name Claims ausgewichen bin, funktioniert die komplette Authentifizierung.

Hatte mich etwas Ärger gekostet, aber der Lerneffekt war dadurch, dass ich dem Tutorial vorgesprescht und es selber versucht habe, um so größer 😃

02.10.2019 - 06:22 Uhr

OK, habe ne Lösung gefunden:
Ich nutze einen URL Shortener und leite diesen auf meine lokale Url um, und gebe dann die Short URL an, denn, diese nimmt Twitter an.

01.10.2019 - 17:24 Uhr

Hallo 😃

Ich mache derzeit diese Tutorialreihe auf Youtube mit: Register application with facebook

OK, das Thema Twitter steht noch aus, aber nach dem ich vorgesprescht bin und die Facebook Authentifizierung dann selber eingebaut hatte, wollte ich auch gleich Twitter mit einbauen.

Bin auch soweit gekommen, dass ich meine Zugangscredentials bekomme, aber wenn ich die Website URL, also die von meiner Web App eingeben will, nimmt Twitter die nicht an, weil Twitter hier im Gegensatz zu Google und Facebook, keine lokalen URLs akzeptiert.

Die Lösung zielt also irgendwie in die Richtung, dass ich für meine Webseite eine virtuelle Domain angebe, aber wie kann ich das auf dem Entwicklungsserver realisieren und zweitens: Ist das überhaupt möglich?

Oder bleibt mir nur der komplette Umzug in den großen IIS?

23.09.2019 - 18:17 Uhr

Danke für die Antworten, werde mir das alles mal in Ruhe intensiv anschauen.

PS: Paderborn hat es nicht geschafft saisonübergreifend im 6. Spiel in Folge in der ersten Viertelstunde zu treffen. - Dafür aber diesmal in den ersten 15 Minuten der zweiten Halbzeit ...

21.09.2019 - 08:50 Uhr

verwendetes Datenbanksystem: <MSQL>

Zu erst die Hintergrundgeschichte, als Motivation:
Kürzlich hatte das Datenunternehmen Opta bekannt gegeben, dass der SC Paderborn in der Bundesliga einen neuen Startrekord aufgestellt hat, da er als erstes Team an den ersten vier Spieltagen in den ersten 15 Minuten getroffen hat.

Nach meiner Verwunderung, was so alles statistisch erfasst wird, habe ich angefangen darüber nachzudenken, wie so eine Datenbank aussehen könnte.

Ich kam auch zu dem Schluss, dass jedes einzelne Tor ein Dateneintrag sein müsse mit diversen Fremdschlüsseln auf Torschützen, Spielminute, etc.

Mittlerweile konnte ich mir auch selbst beantworten, wie man die ersten vier Spieltage abfragt, man macht halt einfach eine Und Verknüpfung für die Spieltage 1 bis 4, denn drei war die bisherige Bestmarke.

Aber wie fragt man das allgemein ab, wenn man einfach nur die maximale Serie sucht, egal, ob die nun mit dem ersten Spiel oder einem späteren Spiel begonnen hat, denn hier liegt der Rekord beim BVB mit 6 Spielen aus 1960.

(Da Paderborn auch 2015 am letzten Spieltag in seiner bis dahin ersten und letzten Bundesliga Saison in der Anfangsviertelstunde getroffen hatte, könnten sie heute mit einem frühen Tor in Berlin sogar hier gleichziehen)

Aber um das ganze mal anschaubar zu machen:

Man nehme mal an, man habe eine Tabelle mit ganzen Zahlen, ein paar hängen zusammen, also folgen aufeinander, aber es gibt auch Lücken auf dem abgebildeten Zahlenstrahl.

Wie finde ich nun die längste zusammenhängende Sequenz, denn darauf reduziert sich das Ganze letztendlich?

21.09.2019 - 08:35 Uhr

Hallo 😃

ich habe in der ConfigureServices Funktion
public void ConfigureServices(IServiceCollection services)

folgenden Codeteil:


services.AddMvc(config =>
            {
                var policy = new AuthorizationPolicyBuilder()
                    .RequireAuthenticatedUser().Build();
                config.Filters.Add(new AuthorizeFilter(policy));
            });

Jetzt mal meine Frage dazu:
Was genau passiert in dieser Konfiguration?
Konfiguriert das nur Role Based Authorisierung, oder muss ich das immer aufrufen, auch wenn ich nur eine rein Claim basierte Authentisierung verwende:


services.AddAuthorization(options =>
            {
                options.AddPolicy("DeleteRolePolicy", policy => policy.RequireClaim("Delete Role","true"));
               
            });

23.08.2019 - 12:40 Uhr

Habe den Code nicht mehr, denn nachdem ich a als statische Klassenvariable definiert hatte (auf Empfehlung von VS) war der Fehler weg, allerdings stellte sich die Programmlogik dann als falsch heraus ...

Ja, a und b sind beides String Variablen, auf die ich per Indexer aufs erste Zeichen zugreife.

Das Kuriose ist und bleibt halt, dass a und b semantisch gleich sind, und doch so unterschiedlich agieren, nämlich bei a mit einem Fehler.

Deshalb ja auch der Screenshot: Ihr solltet die Fehlermeldung selbst sehen, so unfassbar wie sie ist. 😉

23.08.2019 - 01:43 Uhr

hier seht ihr einen Screenshot mit Fehlermeldung

oben im Code seht ihr die Zuweisungen an die String Variablen a und b.

So, und nun meine Frage: Was ist an b besser, als an a?
Sorry, aber für mich ist das nen paar Stufen zu blöd:

Warum ist b zugewiesen, und a nicht?

PS: Der Code ist ein Ausschnitt eines Lösungsversuchs einer Codewars Aufgabe, falls es jemanden interessiert. Aber der Rest ist hier nicht relevant.

18.08.2019 - 15:44 Uhr

Naja, ich sehe das halt wie folgt:

Es ist doch der Sinn der sog. Tag Helper und des ASP-Frameworks, dass ich mir keine Gedanken über das HTML machen muss, bzw. mich auf die reine Logik konzentrieren kann, die Feinarbeit aber im Hintergrund passiert.

Klar, wenn man sich der Notwendigkeit von der For-Schleife bewusst ist, dann ist es logisch, aber kennt man sie nicht, ist sie ja nicht sofort offensichtlich.

17.08.2019 - 10:19 Uhr

das ist mir klar, nur handelt es sich bei Razor Schleifen um 'simulierte' Schleifen, wo in der Implementierung durch das Framework, ja durchaus ein Zähler mitlaufen könnte.

17.08.2019 - 02:51 Uhr

Wie es der Zufall wollte, kam heute Abend (im Rahmen der Reihe, wo der Fehler auftrat) die Erklärung:

Bei dem Problem handelt es sich um eine fehlerhafte Implementierung des Razor Interpreters (oder wie auch immer man das Ding nun nennt):

Bei Checkboxes verwendet er die Indizes der For Schleife als eindeutige Indikatoren, um die Feldnamen unique zu machen.
Bei Foreach fehlen ihm diese Indizes, und ASP.NEt Core kann kein Model bilden, auf Grund redundanter Feldnamen.

Eigentlich unnötig, denn auch wenn foreach keine Indizes hat, so kann man doch beim PARSEN dieser Razor foreach Schleife intern einfach einen Counter mitlaufen lassen, und das Problem wäre aus der Welt ...

Hoffe Microsoft fixed diesen Issue erstmal, bevor man wieder neue Versionen raushaut ...

Hier das Video dazu:
https://www.youtube.com/watch?v=Qobkh8gEP6Q&feature=youtu.be

16.08.2019 - 14:50 Uhr

Es geht um folgende Ansicht:


@model List<UserRoleViewModel>

@{
    var roleId = ViewBag.roleId;
}

<form method="post">
    <div class="card">
        <div class="card-header">
            <h2>Add or remove users from this role</h2>
        </div>
        <div class="card-body">
            @for (int i = 0; i < Model.Count; i++)
            {
                <div class="form-check m-1">
                    <input type="hidden" asp-for="@Model[i].UserId" />
                    <input type="hidden" asp-for="@Model[i].UserName" />
                    <input asp-for="@Model[i].isSelected" class="form-check-input" />
                    <label class="form-check-label" asp-for="@Model[i].isSelected">
                        @Model[i].UserName
                    </label>
                </div>
            }
        </div>
        <div class="card-footer">
            <input type="submit" value="Update" class="btn btn-primary"
                   style="width:auto" />
            <a asp-action="EditRole" asp-route-id="@roleId"
               class="btn btn-primary" style="width:auto">Cancel</a>
        </div>
    </div>
</form>

Wenn ich nun die For-Schleife durch folgende foreach Schleife ersetze, erhalte ich als Model eine leere Liste. Was soll das? Sollte die Wahl der Schleife nicht egal sein, solange ich die Indexes nicht brauche???


@foreach (var vm in Model)
            {
                <div class="form-check m-1">
                    <input type="hidden" asp-for="@vm.UserId" />
                    <input type="hidden" asp-for="@vm.UserName" />
                    <input asp-for="@vm.isSelected" class="form-check-input" />
                    <label class="form-check-label" asp-for="@vm.isSelected">
                        @vm.UserName
                    </label>
                </div>
            }

27.07.2019 - 01:30 Uhr

wenn es mein Code wäre, aber hier ist es eine FREMD Funktion, auf die ich, außer ihrem Aufruf, keinen Zugriff habe ...

26.07.2019 - 14:05 Uhr

ich hab die API über nuget installiert. Ne Doku hätte ich gern gehabt, aber keine gefunden

26.07.2019 - 13:01 Uhr

Habe die Files jetzt mal die Quellcodes (keine komplette VS Solution) auf github hochgeladen.

Gut möglich, dass ich beim strukturieren Fehler gemacht habe, oder man es zumindest optimaler hätte machen können, aber strukturiert programmiert habe ich ...

https://github.com/CoderboyPB/SimpleTwitterBot

Sorry für Doppelpost, aber der geht auf die Forumssoftware ...

26.07.2019 - 12:39 Uhr

Hast jetzt nicht die Ursache, sondern die Symptome behandelt 😉

Das Ding hat die ganze Zeit die Tweets versendet, trotz der Exceptions, es hat also FUNKTIONIERT.

Habe mir dann gedacht, OK, wenn nur die Exception das Problem ist, fängste sie einfach ab, und machst nen leeren catch Block, macht man zwar nicht, aber was soll ich machen, wenn der Fehler in der Fremd API liegt ???

Habe die Quellcodes (keine komplette VS Solution) auf github hochgeladen.

Gut möglich, dass ich beim strukturieren Fehler gemacht habe, oder man es zumindest optimaler hätte machen können, aber strukturiert programmiert habe ich ...

https://github.com/CoderboyPB/SimpleTwitterBot