Laden...

Forenbeiträge von mfe Ingesamt 177 Beiträge

30.07.2021 - 08:00 Uhr

Was Du mit den Predicates machen willst, geht langfristig in die Hose.
Es gibt/gab zwar ein Framework, das eine LambdaExpression als String de/serialisiert, das könntest Du dann speichern, aber wie gesagt: Das geht in die Hose ^^

Du meinst https://github.com/esskar/Serialize.Linq oder?

PS: Wie gesagt es geht nicht darum wie, die Konfig abgespeichert wird (ob DB oder in Azure App Configuration spielt ja für die eigentliche Anforderung keine Rolle)

29.07.2021 - 09:48 Uhr

Es gibt Anwendungen wo eine variable Struktur in json serialisiert wird und dann in einer Datenbank gespeichert wird.

Grüße Bernd

Die Struktur des Typen bleibt immer gleich. Ich bräuchte aber so etwas wie eine Funktion die true oder false zurückgibt (die als Parameter den Typ Car übergeben bekommt). Für jede Konfiguration schaut dann die Funktion anderst aus. Als z.B. so etwas:


//konfig liste vom backend
konfig=new List<Konfig> ()
{
      new Konfig() { new Predicate<Car>(s => s.Doors == 1)},
      new Konfig() { new Predicate<Car>(s => s.Typ == "2")},
      new Konfig() { new Predicate<Car>(s =>
            {
                Regex regex = new Regex(".");
                return regex.IsMatch(s.Typ);
            });
      ....
}
//evaluierung welche cars aufgrund der konfig hinzugefügt werden dürfen

            List<Car> cars = GetCars();
            foreach (var car in cars)
            {
                foreach (var konfig in konfig)
                {
                    if(konfig.Predicate.Invoke(car)) //predicate gibt true oder false zurück
                    {
                        yield return car;
                    }
                }
            }


Ich schau mir jetzt noch https://github.com/microsoft/ClearScript an, schaut auch intressant aus.

29.07.2021 - 08:53 Uhr

Hi,

ich möchte eine Konfiguration möglichst dynamisch und flexibel halten (Diese soll einen konkreten Typ konfigurierbar machen - hier Car). Dazu wird die Konfiguration in einer DB gehalten und dann auf dem Client heruntergeladen und später ausgeführt. Derzeit ist dies alles statisch und soll nun eben flexibler werden. Später soll man die Konfiguration über ein Webinterface bearbeiten können.

Ich hätte zuerst folgenden Lösungsansatz verfolgt: In die Konfig ein Predicate<Car> geben und den Predicate in der DB Serialisieren.


new Predicate<Car>

Leider ist das Serialisieren mit dem BinarySerializer von delegates deprecated. Während der Recherche ist mir noch DLR untergekommen. Gibt es vlt. noch eine weitere Technik die mir hier weiterhelfen könnte? Hätten ihr Tipps für mein Vorhaben? Danke im Voraus.


    class Car
    {
        public int Doors { get; set; }
        public string Typ { get; set; }

        ...
    }

20.05.2019 - 16:37 Uhr

Setze einen Haltepunkt nach dem Laden der Oberfläche und gib den DataContext vom ComboBox Control aus. Hast du im Output irgendwelche Binding Errors?

Wahrscheinlich passt ein Binding nicht.

Das könnte vlt auch helfen https://get-the-solution.net/blog/ItemsSource%20zu%20UserControl%20hinzuf%C3%BCgen

30.08.2018 - 17:25 Uhr

openshift.com - da gibts auch eine free version (natürlich mit einschränkungen)

https://docs.openshift.com/container-platform/3.3/using_images/s2i_images/dot_net_core.html

07.08.2018 - 10:26 Uhr

IoC - Inversion of Control bedeudet, dass du die Steuerung deines Programmablauf abgibst.

Äh, nein, das bedeutet es nicht. Es bedeutet, dass die konsumierende Klasse bestimmt, wie Teilaspekte des Programmablaufs, der in der/den ausführenden Klasse(n) definiert ist, implementiert sind. Die ausführenden Klassen geben die Verantwortung für die Implementierung ab. Dadurch wird der Konsument anstelle der ausführenden Klasse zum steuernden Teil - inversion of control, literally.

Äh... nein und nochmal nein. Es heißt "Statt dass die Anwendung den Kontrollfluss steuert und lediglich Standardfunktionen benutzt, wird die Steuerung der Ausführung bestimmter Unterprogramme an das Framework abgegeben."

07.08.2018 - 09:03 Uhr

IoC - Inversion of Control bedeudet, dass du die Steuerung deines Programmablauf abgibst. Du schreibst deinen Programmcode nur noch in die Schablone. Das Framework ruft, dann deinen Programcode auf. Daher auch als Hollywood Prinzip bekannt. Don't call us, we call u.

Dependecy Injection - Bei der Dependecy Injection gibt man die Objekterzeugung ab. Heutige DI Frameworks können Abhänigkeiten bei der Objekterzeugung erkennen und lösen diese in richtiger Reihenfolge und Abhänigkeit auf. Sollte z.B. die Implementierung IDependency eine Abhänigkeit auf Komponente xy haben, muss zuerst diese erzeugt werden. Erst danach kann IDependecy aufgelöst werden.

Die Begriffe gleichzusetzen ist etwas heikel.

10.05.2018 - 07:39 Uhr

Gab es nichts neues zum XAML Standard? Ich habe dazu nur eine Preview Doc Seite gefunden aber die ist aus 2017.

26.03.2018 - 21:56 Uhr

Danke für den Hinweis auf diesen tollen Eintrag. der hat mir sehr gefallen.
Leider ist das zu allgemein, dass es mein Problem löst, aber trotzdem interessant.
Ich habe das Problem, dass ich nicht weiß wie ich eine Row mit Mouse-Klick auswähle und dann per Button mein Löschkommando ausführe. Es ist dieses Auswählen von einem Datensatz das ich im ViewModel dem Löschen bereitstellen muss.

Wenn das DataGrid oder Control keine passende SelectedItem DependencyProperty (oder der gleichen) hat kannst du auf
*Behavior *Attached properties

zurückgreifen. Schau dir vlt. auch den Anhang vom Beitrag Verlinkungsproblem: System.Windows.Interactivity keine gültige Namespace-ID an.

Bei den Attached Properties geht man so vor, dass man im DependencyPropertyChangedCallBack, vom Control (bei dir das Datagrid) das passende Event registriert und dann z.B. einen Command ausführt.

05.01.2018 - 09:09 Uhr

Lies mal die Comments von dem Thread, dann verstehst du vlt. worauf ich hinaus wollte:
https://www.reddit.com/r/microsoft/comments/7o46xb/microsofts_beautiful_cortanapowered_thermostat_is/

27.12.2017 - 13:06 Uhr

... leiden extrem unter dem schnellen Entwicklungszyklus, manchmal hab ich den Eindruck Insider oder Beta-Nutzer werden als kostenlose Testressourcen gesehen..

Das sehe ich ähnlich.

Die derzeitige Politik des Konzerns, "alles was nicht wirtschaftlich ist wird eingestampft", kann ich in keiner weise nachvollziehen.

Welches Unternehmen ist denn verpflichtet, bei Unwirtschaftlichkeit Produkte weiter zu führen? Welches Unternehmen macht das denn Jahrelang?

Das Einstellen von unwirtschaftlichen Produkten ist ja okay, aber dann sollte es zumindest ein Nachfolgerprodukt oder etwas in die Richtung geben. Ansonsten verliert man als Kunde das Vertrauen zum Unternehmen.

Der Imageschaden ist ja immens?!

Ich möchte dazu ein Beispiel geben. Ein großes Logistikunternehmen, das eine enge Partnerschaft mit Microsoft hat, ist auf Handheld-Devices angewiesen die noch auf Windows CE basieren. Das Unternehmen will schon seit den letzten Jahren die Geräte durch neue ersetzen, wird aber von Quartal zu Quartal vom lokal ansässigen MS Konzern vertröstet, dass die passenden Geräte noch kommen werden. Inzwischen wurde Windows Mobile aufgegeben und das ist für das Interesse der Gerätehersteller Windows IoT Devices zu bauen, sicherlich nicht förderlich. Für das Logistikunternehmen ist das insofern problematisch, da die komplette Firmeninfrastruktur bisher auf eine homogene MS Landschaft gesetzt hat. Abgesehen vom enormen Zeitverlust ist das Vertrauen der beiden Partner angeknackst. Ich glaube auch, dass das Absägen von Windows Mobile auch der UWP Technologie ziemlich weh getan hat. Keine Ahnung, ob Microsoft irgendwann, in irgendeiner Form im Smartphonebereich wieder zu sehen ist, jedenfalls werden sie dann verdammt gute Überzeugungsarbeit bei den Abnehmern leisten müssen.

Noch ein aktuelles Beispiel aus dem Consumer Bereich: ist der Groove Music Pass. Mit solchen Aktionen verliert man einfach das Vertrauen der Konsumenten für zukünftige Produkte.

Beim XAML Standard scheint irgendwie auch nichts weiter zu gehen.

Was genau erwartest Du denn? XAML hat im mobilen Sektor fast nichts zu melden - wieso dem Ganzen eine riesen Priorität geben?
UWP kam weder beim Endkunde noch in Firmen wirklich an.

Firmen wollten lieber Webseiten statt UWP Apps (Web ist nämlich viel einfacher zu veralten (und günstiger)) für den Client und von Windows Mobil-Geräten sind Unternehmen auch weit weg.

Mit .NET Core und ASP.NET Core gibt es eine gut aufgestellte Technologie für Backends. Also wenn es irgendwie geht, baut man sowieso eine Web Applikation mit einem ASP.NET Core Backend.
Wenn man aber eine native Anwendung mit einer Oberfläche (keine App) für MacOS bauen will, sieht es sehr dürftig aus. Es gibt zwar 1-2 Projekte die was in die Richtung machen, aber das sind keine offiziellen Projekte von MS und daher weiß man noch nicht in welche Richtung sich das entwickeln wird. Wir haben seit den letzten zwei Jahren immer mehr Kunden die keine MS Infrastruktur vorweisen können.

24.12.2017 - 09:42 Uhr

Ich werde, wenn es mir als Entwickler möglich ist, ebenfalls versuchen Abhängigkeiten von MS Produkten zu eliminieren. Die derzeitige Politik des Konzerns, "alles was nicht wirtschaftlich ist wird eingestampft", kann ich in keiner weise nachvollziehen. Der Imageschaden ist ja immens?! Als Business Kunde konnte man sich sicher sein, dass es das MS Produkt, oder besser die Plattform noch lange Jahre erhalten bleiben und supported wird. Wenn dann die Consumer aufgrund dessen schon anfangen MS Produkte ausschließen, ist das mehr als bedenklich.

UWP verliert bei mir persönlich immer mehr an Reiz dafür etwas zu Entwickeln. Da bau ich doch gleich lieber eine Xamarin App.
Beim XAML Standard scheint irgendwie auch nichts weiter zu gehen.
Das einzig was schon immer interessant war und auch die nächste Zeit bleiben wird, ist .NET Core + Azure. Die alternativen IDEs werden auch immer besser und somit brauch ich eigentlich gar keine Windowsumgebung mehr.

28.09.2017 - 10:58 Uhr

Leider sehe ich die Frage nicht eindeutig.

Ich hätte aber gemeint du könntest evtl. was mit dem Adapter-Pattern anfangen.

Mit dem Dictionary kannst du dahingehend auch schon einiges machen.

Eine möglicher Ansatz wäre z.B:

Dictionary<Typ, IAdapter> _AdapterDictionary
_AdapterDictionary.Add(typeof(BookAmazonType),AdapterAmazon);
_AdapterDictionary.Add(typeof(BookStadtBibliothekType),AdapterStadtBibliothek);

Für jedes Interface das gewrappt werden muss erstellst du einen Adapter. Z.b. AdapterAmazon,AdapterStadtBibliothek,AdapterC... die IAdapter implementieren.

Im _AdapterDictionary hinterlegst du für jeden Typ die passende Adapterinstanz. Zugriff könnte dann so aussehen.

_AdapterDictionary[CustomTyp.GetType()].GetBook("");
26.09.2017 - 08:19 Uhr

Für mich interessant waren:

  • Azure Stack ist für Kunden die Cloud-Skeptiker sind interessant, preislich aber nur für große Firmen relevant
  • Das SQL Server Graph Feature schaut auch ziemlich nice aus. Der Linux support
    ist auch top
25.09.2017 - 18:12 Uhr

Was gibt es da spannendes?

13.09.2017 - 07:50 Uhr

Oder anders gesagt: Mein UserControl liegt in einer ListView, an die gebunden wird. Deshalb findet das Binding in meinem Control die Eigenschaft nicht mehr (denn der DataContext ist in dem Fall das Objekt der ObservableCollection<objekt> / Item des ListCollectionView).

Ich denke, dein Problem wird hier beschrieben:
http://get-the-solution.net/2009/02/20/itemssource-zu-usercontrol-hinzufugen/

11.09.2017 - 17:58 Uhr

Eine Frage dazu:

Würde etwas dagegen sprechen wenn man einen eigenen Windows-Account anlegt, der von der WebApp verwendet wird (AppDomain im IIS) und dieser gegen die DB fährt? Setzt natürlich vorraus, dass der AppDomain Prozess Zugriffsrechte auf die DB hat.

10.09.2017 - 19:10 Uhr

Super! Freut mich. 👍 🙂

02.09.2017 - 13:31 Uhr

Also muss dann die Klasse Vertrag auch von INotifyPropertychanged [...] implementieren. Ja.

02.09.2017 - 12:25 Uhr

Du musst in der Property im Setter auch die Methode OnPropertyChanged(propertyname) aufrufen (In der Klasse Vertrag).

28.08.2017 - 09:55 Uhr

Stell dir vor, jemand konnte erfolgreich JavaScript Code in deine Seite einschleusen. Nun kann dieser weiteren Code über Ajax nachladen. Das wird mit den CORS teilweise verhindert. Der Browser schickt ein Request mit orign x.at. Der Backend Antwortet unter y.at. Das kommt dem Browser seltsam vor und blockiert den Request.

23.08.2017 - 22:57 Uhr

Den DataContext bei jedem Control einzeln zu setzen ist die falsche Herangehensweise.

Die ListBox, ListView haben dafür z.B. die DependencyPropertie (DP) ItemsSource vorgesehen.

Darauf bindest du dann deine Liste welche du im ViewModel hälst.

23.08.2017 - 20:48 Uhr

Über DataContext hätte ich jetzt einem Sub-Control sein ViewModel zugewiesen.. Mittels StaticResources.

Eine StaticResource ist nicht notwendig. Die Controls erben alle den DataContext vom Window. Du verwendest für dein Vorhaben also ein normales Binding.


[...]
<UserControl DataContext={Binding SubVM} />

23.08.2017 - 15:28 Uhr

Besser ist du verwaltest die VMs im Codebehind.

Das kannst du z.B. so machen:

Du hast in deinem WPF Projekt eine App.xaml.cs. In dieser überschreibst du die OnStartup Methode. Dort drinnen erzeugst du die Window als auch deine ViewModel Klassen Instanz(en). Beim Window die Show Methode aufrufen nicht vergessen! [...] In der App.xaml entfernst du den Eintrag StartupUri="Window1.xaml". Damit verhinderst du, dass das Window nicht vom "XAML" erzeugt wird. [Source]

Du hast ja gesagt, dass du so etwas wie ein Haupt-ViewModel hast die die anderen ViewModels verwaltet.

Du könntest also z.B. alle ViewModel-Instanzen in der Startup Methode erzeugen und dann via Konstruktor dem Haupt-ViewModel übergeben.

22.08.2017 - 18:54 Uhr

Instanzen von Konstruktoren mit Überladungen im XAML zu initialisieren geht meines Wissens nicht. Du brauchst also immer einen Parameterlosen Konstruktor.

Generell solltest du ViewModelinstanzen im XAML nicht erstellen. Das macht man meistens nur bei Beispielprojekten (weil bequem und schnell).

Besser ist du verwaltest die VMs im Codebehind. In größeren Projekten übernehmen das ViewModel Locator Services in kombination mit Dependency Injection Frameworks wie MEF (wird z.b. von Visual Studio selbst verwendet), Unity um mal zwei zu nennen.

17.08.2017 - 22:07 Uhr

Hi,

der Titel sagt schon alles.

https://doesmysiteneedhttps.com

11.08.2017 - 08:30 Uhr

Bei deinem angehängten DropBox Projekt hast du das falsche Nuget Package installiert. Das ist bei mir auch nicht lauffähig. Das Nuget Package ist übrigens auch nicht von Microsoft veröffentlicht worden.

Wenn du das Nuget Package "Expression.Blend.Sdk" von Microsoft installierst, geht es.

09.08.2017 - 21:12 Uhr

Fehler:

Der Name "Interaction" ist im namespace xxx nicht vorhanden.

Was sagt die IntelliSense im XAML Editor wenn du "<i:" eingibt? Oder schau besser in der Projektmappe unter den Referenzen nach. Doppelklick bei "System.Windows.Interactivity"

1.) Im Object Browser kannst du alle vorhandenen Klassen, Members usw. durchsuchen. Du musst darin alle Klassen finden die du im XAML verwenden möchtest.
2.) Wenn sich die "System.Windows.Interactivity" in einem packages Ordner befindet handelt es sich um das NuGet package das du mit Install-Package Befehl heruntergeladen hast. Sollte die in einem anderen Ordner liegen, wäre es möglich, dass auf eine falsche dll verwiesen hast.
Soweit ich mich erinnern kann wird mit Visual Studio 2015 und Blender die Interactivity Bibliothek mit ausgeliefert. Es kann also sein, dass du die Blender Dll einmal mittels Add Reference -> Add Assemblies -> Extensions und einmal per NuGet Package hinzugefügt hast. Das führt dann zu Fehler.

Ich habe einer Anleitung von der NuGet-Seite... Dort habe ich mit

Install-Package Expression.Blend.Sdk -Version 1.0.2  

in der NuGet-Console versucht, das Package hinzuzufügen - was auch klappte.

Ich kann noch ein passendes Paket empfehlen: Expression.Interaction
Damit kannst du, dann noch mehr im XAML anstellen. Beispiel siehe Anhang und unteren XAML Code:


            <TextBlock Text="click me ;)">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="MouseDown">
                        <i:InvokeCommandAction Command="{Binding Path=CloseCommand}" CommandParameter="textbox" />
                    </i:EventTrigger>
                    <i:EventTrigger EventName="MouseEnter">
                        <ie:ChangePropertyAction PropertyName="Background" Value="Yellow" />
                    </i:EventTrigger>
                    <i:EventTrigger EventName="MouseLeave">
                        <ie:ChangePropertyAction PropertyName="Background" Value="Green" />
                    </i:EventTrigger>                    
                </i:Interaction.Triggers>
                <Button Content="click me for setting the focus" Background="LightGoldenrodYellow">
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="Click">
                            <ie:CallMethodAction  TargetObject="{Binding}" MethodName="bla" IsEnabled="True" />
                        </i:EventTrigger>   
                    </i:Interaction.Triggers>
                </Button>
                <TextBox x:Name="texbox"  Text="" Width="200">
                    <i:Interaction.Triggers>
                        <ie:DataTrigger Binding="{Binding Path=IsMouseOver ,UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource AncestorType={x:Type TextBox}}}" Value="True">
                            <ie:ChangePropertyAction PropertyName="Background" Value="Blue" />
                        </ie:DataTrigger>
                        <ie:DataTrigger Binding="{Binding Path=IsMouseOver ,UpdateSourceTrigger=PropertyChanged,RelativeSource={RelativeSource AncestorType={x:Type TextBox}}}" Value="False">
                            <ie:ChangePropertyAction PropertyName="Background" Value="Purple" />
                        </ie:DataTrigger>
                    </i:Interaction.Triggers>
                </TextBox>
            </TextBlock>

Hast du vielleicht eine bessere Alternative, auf das Event im ViewModel zu reagieren? (Ohne Code in der XAML-Code-behind).

Eine bessere Möglichkeit gibt es nicht. Man kann sich Helper Klassen erstellen wie z.B. hier MVM: Event aus UserControl mit Command binden. Die kann man dann noch etwas allgemeiner ausführen, aber dann hat man früher oder später fast das gleiche wie das vom Expression.Blend.Sdk.

09.08.2017 - 14:57 Uhr

Ich finde die Variante von ThomasE. legitim sowie die Verwendung der Interactions vom Blend SDK.

<Window x:Class="WpfApp1.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:i="http://schemas.microsoft.com/expression/2010/interactivity"
        xmlns:local="clr-namespace:WpfApp1"
        mc:Ignorable="d" 
        Title="MainWindow" Height="350" Width="525">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Closing">
            <i:InvokeCommandAction Command="{Binding Path=CloseCommand}" CommandParameter="{Binding}"/>
        </i:EventTrigger>
    </i:Interaction.Triggers>

Es macht durchaus Sinn für Events, bei denen man öfter ein Command ausführen will, eine Helper Klasse mit Attached Properties anzulegen. Die Helper Klasse kann man ja in mehreren Projekten wiederverwenden. Die Zeitersparnis und der Komfort zahlt sich jedenfalls aus.

Wenn ich dies mit meinem Event aus meinem UserControl auch tue, funktioniert nichts.

Kannst du das bitte präzisieren? Wird der Command nicht ausgelöst?

Wie kann ich in einem UserControl ein Event bauen...

RoutedEvent - https://msdn.microsoft.com/de-de/library/ms752288(v=vs.110).aspx

, damit ich diesen mit einem Command-Befehl in mein ViewModel bringen kann?

Keine Ahnung was du damit meinst, ich kann es nur erahnen. Jedenfalls wenn du ein RoutedEvent erstellst, kannst du dieses dann im i:EventTrigger EventName="DeinCustomRoutedEvent" angeben.

PS: Passt zum Thema: https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/routed-events-overview#routing-strategies

05.08.2017 - 16:41 Uhr

Wird der Button überhaupt im Visual Tree angezeigt? Also im Sinne wird er im Visual Tree aufgelistet. Was sagt der WPF Inspector?

03.08.2017 - 12:38 Uhr

Hi, im Moment bin ich etwas am "verzweifeln". Ich möchte die Werte einer Textbox in meinem WPF MainWindow mit Hilfe einer Schleife die in einem anderen Klasse (in normaler .cs Datei) in einer Methode Steckt, aktualisieren.

Du hast in deinem WPF Projekt eine App.xaml.cs. In dieser überschreibst du die OnStartup Methode. Dort drinnen erzeugst du die Window als auch deine Klassen Instanz. Beim Window die Show Methode aufrufen nicht vergessen! Die Textbox Werte aus dem Window kannst du über Methoden, public Members, Events an eine Klasse weiterreichen.

In der App.xaml entfernst du den Eintrag StartupUri="Window1.xaml". Damit verhinderst du, dass das Window nicht vom "XAML" erzeugt wird.

[Edit]
Viel einfacher wäre es, wenn du im Codebehind vom Window die Instanz deiner Klasse erzeugst.

01.08.2017 - 11:00 Uhr

Hast du XSLT Transformation in Betracht gezogen?

29.07.2017 - 18:45 Uhr

Danke Gü. Deine Tipps haben mir weitergeholfen.

29.07.2017 - 16:32 Uhr

Hi,

die Projektdatei:
https://github.com/mfe-/Prism.Validation/blob/master/Core/Prism.Validation/Prism.Validation.csproj

Die exportierte yml Datei

version: 1.0.{build}
image: Visual Studio 2017
build_script:
- cmd: nuget restore
29.07.2017 - 16:12 Uhr

Hi,

ich habe ein PCL Projekt in das neue Net Standard Projekt konvertiert.

Seitdem meckert appveyor:> Fehlermeldung:

SBuild auto-detection: using msbuild version '14.0' from 'C:\Program Files (x86)\MSBuild\14.0\bin'.
C:\projects\prism-extensions\Core\Prism.Validation\Prism.Validation.csproj(1,1): error MSB4041: The default XML namespace of the project must be the MSBuild XML namespace. If the project is authored in the MSBuild 2003 format, please add xmlns="http://schemas.microsoft.com/developer/msbuild/2003" to the <Project> element. If the project has been authored in the old 1.0 or 1.2 format, please convert it to MSBuild 2003 format.

Im Enviroment habe ich von Visual Studio15 auf VS17 umgeschalten. Er verwendet aber weiterhin msbuild14.

Was muss ich tun, dass er beim Buildvorgang msbuild15 verwendet?

26.07.2017 - 19:48 Uhr

3.) Für jedes Navigations Element kannst du ein UserControl erstellen
4.) Wenn der User in der ListView auf ein Element klickt, tauscht du das ContentControl.Content durch das passende UserControl aus

Das ist genau die falsche Herangehensweise. In WPF erstellt man nicht manuell UserControls, sondern verwendet DataBinding.

Ich habe die Frage so verstanden, dass es darum geht komplette "Views" nach einem Navigation Item click zu laden. Mein Lösungsvorschlag beschreibt stark vereinfacht die Umsetzung eines RegionManager die in MVVM Frameworks wie PRISM Verwendung finden.

Außerdem schließt die Verwendung von UserControls ein DataBinding nicht aus.

26.07.2017 - 17:57 Uhr

Vom Aufbau kannst du so vorgehen:

1.) Ein Window das links eine ListView oder ein Tree Control für die Navigation hat
2.) Rechts davon gibst du ein ContentControl
3.) Für jedes Navigations Element kannst du ein UserControl erstellen
4.) Wenn der User in der ListView auf ein Element klickt, tauscht du das ContentControl.Content durch das passende UserControl aus

Siehe auch:
Window vs Page vs UserControl for WPF navigation?

26.07.2017 - 16:33 Uhr

Da PierreDole noch erwähnt hat, dass das Problem weit aus Größer sein kann:

On a typical PC, which search algorithm would you choose, BFS, DFS, IDS, A*, or IDA*? Why? Hint: which is larger, L or the average branching factor B? (5 points) DFS is the most suitable, and actually almost all Sudoku search program use DFS. B can be in the range of 9×53 so B >> L. Hence BFS and A* will have serious memory problem on a typical PC. [...]

Siehe http://www.cs.cmu.edu/afs/andrew/course/15/381-f08/www/homework/hw1-sol.pdf Seite 2 e.

26.07.2017 - 14:29 Uhr

Das könnte ein Fall für den
>
sein.

Eine C# Implementierung von mir existiert hier im Forum

Könntest du bitte den Link hier posten. Ich erhalte bei der Foren Suche momentan:
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 71 bytes) in /var/www/vhosts/mycsharp.de/httpdocs/wbb2/acp/lib/class_db_mysql.php on line 83

25.07.2017 - 19:59 Uhr

Oder muss ich im Control den BindingProxy raus werden und an jeder Stelle nach AncestorType suchen?

Ja, ich würde zur AncestorType Lösung tendieren. Eine andere Möglichkeit wäre du gibst im Binding ein AncestorType Self an. Dann hast du als DataContext dein UserControl und kannst auf die DPs zugreifen.

Evtl. könnte das für dich noch intressant sein:
http://paulstovell.com/blog/wpf-part-names - TemplateParts
http://get-the-solution.net/2009/02/20/itemssource-zu-usercontrol-hinzufugen/ - AncestorType

20.07.2017 - 16:13 Uhr

Danke dir!

Eigentlich sollte nichts dagegen sprechen, wenn man aus der Node class ein Node struct macht? Left und Right sind bereits reference values - somit sollte sich an der "Bedingung" von den Nodes sich nichts ändern.


        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            INode<BaseData> n1 = new Node<BaseData>();
            n1.Data = new ExtendedData();
            INode<BaseData> n2 = new Node<BaseData>();
            n2.Data = new BaseData();
            INode<BaseData> n3 = new Node<BaseData>();
            n3.Data = new ExtendedData();
            INode<BaseData> n4 = new Node<BaseData>();

            INode<ExtendedData> n5 = new Node<ExtendedData>();
            INode<ExtendedData> n6 = new Node<ExtendedData>();

            n1.Left = n2;
            n2.Left = n3;
            n3.Left = n4;
            n4.Left = n5;
            n5.Left = n6;

            INode<BaseData> current = n1;
            do
            {
                Console.WriteLine(current.GetType());
                current = current.Left as INode<BaseData>;

            } while (current != null);
        }

Wäre eine typensichere Realisierung von untenstehendem Beispiel möglich?

Node<Base>.Left => Node<Extended>.Left => Node<Base>.Left => Node<Extended>.Left ...

20.07.2017 - 13:11 Uhr

Hi Sir Rufo,

Danke für den Beitrag. Ich habe mir erlaubt deinen Code zu erweitern.

Mit der Lösung von dir muss man zum Setzen immer die Klasse Node verwenden. Wenn man nur mit dem Interface arbeitet, hat man keine Möglichkeit Left und Right zu setzen. Das hätte ich bei meinem Beispiel auch angeben sollen.

Ich hätte jetzt folgendes vorgeschlagen:



    public interface INodeG<out TData>
    {
        TData Data { get; }
        INodeG<TData> Left { get; }
        INodeG<TData> Right { get; }
    }

    public interface INodeS<in TData>
    {
        void SetData(TData data);
        void SetLeft(INodeG<TData> data);
        void SetRight(INodeG<TData> data);

    }

    public class Node<TData> : INodeG<TData>, INodeS<TData>
    {
        protected TData _Data;
        public TData Data { get => _Data; set => SetData(value); }

        protected INodeG<TData> _Left;
        public INodeG<TData> Left { get => _Left; set => SetLeft(value); }
        protected INodeG<TData> _Right;
        public INodeG<TData> Right { get => _Right; set => SetRight(value); }

        public void SetData(TData data) => _Data = data;

        public void SetLeft(INodeG<TData> data) => _Left = data;

        public void SetRight(INodeG<TData> data) => _Right = data;
    }
class Program
{
    static void Main(string[] args)
    {
            INodeS<BaseData> n1 = new Node<BaseData>();
            INodeG<ExtendedData> n2 = new Node<ExtendedData>();
            n1.SetLeft(n2);
    }
}

Imho gefällt mir nicht, dass man immer je nach dem, ob man Left oder Right setzen oder holen will, das passende Interface INodeS oder INodeG verwenden muss. Ein Interface dafür wäre händelbarer.

20.07.2017 - 11:53 Uhr

Hi,

hat schon mal wer eine funktionierende Covariance LinkedList gebaut?

So etwas sollte funktionieren:

   
Node<BaseData> n1 = new Node<BaseData>();
Node<ExtendedData> n2 = new Node<ExtendedData>();

n1.Left = n2;

Toll wäre wenn die implementierende Klasse von INode das Ganze so verpackt, dass man da jetzt nicht mit 2-3 generischen Typen arbeiten muss.

Ich habe es mal so probiert. Wahrscheinlich nicht jedermanns Geschma#ck.


    public interface INode<in TData, out TOutData>
    {
        INode<TData, TOutData> Left { get; }
        INode<TData, TOutData> Right { get; }

        TOutData Data { get; }

        void SetLeft(TData data);
        void SetRight(TData data);
        void SetData(TData data);
    }

Unschön am dem Konstrukt ist, dass SetLeft TData als Parameter erwartet und nicht den Typ INode<TData, TOutData>. Das heißt in der Implementierung von SetLeft und SetRight müsste ich eine neue Instanz mit INode<in TData, out TOutData> erzeugen. Normalerweise möchte man ja als Anwender der Node Klasse Left und Right zuweisen (siehe oben). Die Lösung ist somit nicht zufriedenstellend.

Evtl. könnte man das über einen dritten generischen Typ lösen. Hat wer andere Lösungsvorschläge?

18.07.2017 - 13:54 Uhr

Das heißt ich schließ einfach das iPad/iPhone an meine Windows Maschine mit Visual Studio an und deploy die App auf das Gerät (wobei die App dann halt nur z.b. 1 Woche lang ausgeführt werden kann).

Dann bräuchte ich nicht einmal einen Mac?

18.07.2017 - 13:18 Uhr

Hi,

ich will eine Fitness App erstellen die auf möglichst vielen Plattformen lauffähig sein soll. Zumindest muss sie aber iOS unterstützen. Allerdings ist Mac und iOS ist für mich Neuland.

Ursprünglich wollte ich das Projekt mit Xamarin realisieren. Wenn ich das richtig verstanden habe, brauche ich einen Mac damit ich den iOS-Simulator verwenden kann.

Ich hätte dafür auf macincloud.com zurückgegriffen.

Nun hab ich aber gelesen, dass ich nicht wie bei Windows 10, Windows Mobile oder Android die App Package einfach auf dem iPhone installieren kann? Da muss die App tatsächlich durch das iOS Developer Programm inkl. zugehörigen Dev Account?

Kann das jemand bestätigen? Gibt es keine Möglichkeit auf dem iPhone den Developer Mode zu aktivieren und die App dann analog wie bei Android/UWP über das passende App Package appx oder apk zu installieren? In meiner näheren Umgebung hätte jemand ein iPad, das ich zum Testen verwenden könnte.

Eine Alternative wäre, das ganze mittels Angular umzusetzen. Dann hätte ich alle Plattformen abgedeckt. Allerdings ist eine Anforderung, dass der Benutzer festlegen kann, wann er erinnert werden soll, eine bestimmte Übung auszuführen. Ich bräuchte also so etwas wie einen Alarm oder Notifications. Ich wüsste jetzt nicht wie ich das mit html5 umsetzen könnte, da ja dann die Website immer im Vordergrund sein muss. Würde soetwas evtl. mit Cordava gehen?

Würde mich über Input freuen.

10.07.2017 - 13:04 Uhr

Ist XSLT - Transformation keine Option für dich/euch?

08.07.2017 - 09:52 Uhr

Hey,

in UWP kannst du nicht mehr so einfach mit System.IO auf Files zugreifen. Du arbeitest außerdem dann mit der StoreageFolder oder StoreageFile Klasse. Die Apps laufen alle in einer Art Sandbox. Du hast nur noch Zugriff auf bestimmte Capabilities (Resourcen) die der Benutzer dir freischalten muss.

Du kannst zwar die Capabilitie z.B. den Download Ordner, Music Ordner usw. requesten, das garantiert aber noch keinen Zugriff.

Wenn du die Capabilitie auf den Download Folder hast, hast du Lese und Schreibrechte. Möchtest du außerhalb davon eine File schreiben/lesen muss der Benutzer explizit die File mit dem OpenFileDialog oder OpenFolderDialog auswählen.

Um zukünftig nicht mehr nach den lese/schreibrechten fragenz u müssen, kannst du die FutureAccessList verwenden.

Ansonsten hast du nur Lese- und Schreibrechte in deinem Package Folder. Siehe auch hier https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions

Projekt: FileRenamer

PS: In UWP wirst du auf einige Restriktionen stoßen.

16.05.2017 - 20:21 Uhr

Ah, okay dann muss ich wohl die Cookies von Hand mitschicken. Danke.

16.05.2017 - 19:35 Uhr

Hi,

nach meinem Verständnis müsste ein Response mit Set-Cookie beim Client bewirken, dass dieser dieses Cookie bei den nachfolgenden Anfragen mitschickt. Stimmt das eh oder?

Ich als Response wie gesagt, ein Set-Cookie. Beim nächsten Request vom Client wird dieses Cookie nicht mitgeschickt. Auch im Browser in den DevTools kann ich kein Cookie entdecken.

Zur Info: Frontend läuft auf Port localhost:3000 und Backend auf localhost:8081. CORS ist im Backend aktiviert. Jemand eine Idee?