Laden...
W
WarLorD_XaN myCSharp.de - Member
Softwareentwickler Austria Dabei seit 25.10.2006 113 Beiträge
Benutzerbeschreibung

Forenbeiträge von WarLorD_XaN Ingesamt 113 Beiträge

20.03.2024 - 10:19 Uhr

Die Unmanaged DLLs dürfen nicht in den lib Ordner im nuget Paket rein.
Sondern:

  • In den content (für package.config) Ordner
  • In den contentFiles (ab PackageReference) Ordner

Für obiges Beispiel würde das folgendermaßen aussehen:

Unter:

<package>
  <metadata>
    <contentFiles>
      <files include="any/any/MyLib/myNative.dll" buildAction="None" copyToOutput="true" flatten="true" />
      <files include="any/any/MyLib/myNative.exe" buildAction="None" copyToOutput="true" flatten="true" />
    </contentFiles>

Spezifiziert man was beim Build mit den Dateien gemacht werden soll.
In diesem Fall einfach in das Ausgabeverzeichnis kopieren und die Ordnerstruktur weglassen.

Und unter:

<package>
  <files>
    <file src="out\Release\myNative.dll" target="contentFiles/any/any/MyLib/myNative.dll" />
    <file src="out\Release\myNative.dll" target="content/myNative.dll" />
    
    <file src="out\Release\myNative.exe" target="contentFiles/any/any/MyLib/myNative.exe" />
    <file src="out\Release\myNative.exe" target="content/myNative.exe" />

werden die Dateien zum Paket hinzugefügt.

Siehe auch die Doku:

https://learn.microsoft.com/en-us/nuget/reference/nuspec#including-content-files

06.03.2024 - 10:11 Uhr

Hallo,

ich habe eine C++/CLI DLL die ich in ein Nuget Paket (MyLib) reinpacke.
Die DLL dient als Wrapper für diverse Unmanaged Sachen.
Die dafür benötigten Unmanaged DLLs habe ich in meiner nuspec wie folgt inkludiert:

   <file src="out\Release\myNative.dll" target="lib\net5.0\myNative.dll" />
   <file src="out\Release\myNative.exe" target="lib\net5.0\myNative.exe" />

Ich benötige die myNative.exe im Zielverzeichnis, weil diese von der C++/CLI DLL mit Start Process aufgerufen wird.

Mein Problem ist jedoch nun in der Anwendung die das Nuget Paket konsumiert folgendes:
Die Anwendung startet nicht und es kommt keine Fehlermeldung oder Exception.
Im Windows Event Log finde ich jedoch folgenden Eintrag:

 An assembly specified in the application dependencies manifest (MyTestApp.deps.json) has already been found but with a different file extension:
   package: 'MyLib', version: '1.1.3'
   path: 'lib/net5.0/MyNative.exe'
   previously found assembly: 'C:\dev\sandbox\MyTestApp\bin\Debug\net5.0\MyNative.dll'

Soweit ich das bisher feststellen konnte, handelt es sich da um ein Problem in der MyTestApp.deps.json.
Die sieht folgendermaßen aus:

{
 "runtimeTarget": {
   "name": ".NETCoreApp,Version=v5.0",
   "signature": ""
 },
 "compilationOptions": {},
 "targets": {
   ".NETCoreApp,Version=v5.0": {
     "MyTestApp/1.0.0": {
       "dependencies": {
         "MyLib": "1.1.3"
       },
       "runtime": {
         "MyTestApp.dll": {}
       }
     },
     "MyLib/1.1.3": {
       "runtime": {
         "lib/net5.0/MyLib.dll": {
           "assemblyVersion": "0.0.0.0",
           "fileVersion": "1.1.3.0"
         },
         "lib/net5.0/Ijwhost.dll": {
           "fileVersion": "5.0.1722.21314"
         },
         "lib/net5.0/myNative.dll": {
           "fileVersion": "10.4.0.0"
         },
         "lib/net5.0/myNative.exe": {
           "fileVersion": "1.1.0.0"
         }
       }
     }
   }
 },
 "libraries": {
   "MyTestApp/1.0.0": {
     "type": "project",
     "serviceable": false,
     "sha512": ""
   },
   "MyLib/1.1.3": {
     "type": "package",
     "serviceable": true,
     "sha512": "sha512-xMsaoIYNg35NiUfadzEFGutqOjxomE4qGWBu/wte8pbaHUuZN10OGdtxwb55/BHPdhlP+8JxYutBU2BDTeAaaQ==",
     "path": "MyLib/1.1.3",
     "hashPath": "MyLib.1.1.3.nupkg.sha512"
   }
 }
}

Wie kann ich das Problem lösen, abgesehen davon dass ich die myNative.exe umbenenne?

Vielen Dank,
Xan

21.06.2022 - 08:39 Uhr

Alles klar, das hat so funktioniert.

Vielen dank für deine Hilfe.

19.06.2022 - 10:56 Uhr

Hab ich ehrlich gesagt nie daran gedacht, dass ich ja die inputs/labels/displays auch komplett selbst generieren kann. Obwohl ich andere HTML sachen ja bereits komplett selbst generiere 🙈.
Manchmal ist man so auf eine Methode versteift, dass man gar nicht erst daran denkt es auf andere Art zu versuchen.

Ich werd mir das mal ansehen.
Wie dann die id und name tags der HTML Elemente gesetzt werden müssen, dass dann das Model Binding noch funktioniert, muss ich mir noch ansehen. Das steht aber sicher in der Doku.

Danke für deine Antwort und deine Anregung das komplett anders zu machen.

18.06.2022 - 22:40 Uhr

Hallo,

es geht um ASP.NET Core MVC auf Basis von .NET 6.

Ich habe das Problem, dass die IHtmlHelper.Display Methode bei mir nicht mit Collections funktioniert.

Ich habe in meinem View folgenden Code:


@for (var index = 0; index < Model.Products.Count; index++)
{
    @Html.DisplayFor(m => m.Products[index].Id)
    @Html.Display($"Products[{index}].Id")
}

Die DisplayFor Methode funktioniert einwandfrei.
Die Display Methode kann nicht mit dem Index-Operator umgehen, sondern gibt nichts aus.

Ist das "Works as Designed", oder mache ich hier irgendwo einen Fehler?

Das Model der oben erwähnten View sieht folgendermaßen aus:


public class ProductsViewModel
{
    public List<Product> Products { get; set; }
}
public class Product
{
    public int Id { get; set; }

    public string Name { get; set; }
}

Falls sich jemand fragt warum ich nicht einfach die DisplayFor Methode verwende:
Ich habe einen TagHelper indem ich nur die die nicht-generische IHtmlHelper Komponente verwenden kann.
Der obige Code dient nur dazu mein Problem besser darzustellen.

Vielen Danke für eure Hilfe,
Xan

02.11.2021 - 09:25 Uhr

Hallo Kriz,

ich würde so gut es geht, vermeiden in der DB Logik abzubilden.
Das ist meiner Ansicht nach schwer zu Testen und irgendwie ja auch nicht die Aufgabe einer DB.

sg,
Xan

31.10.2021 - 19:30 Uhr

Alles klar dann werde ich das mal mit dem LinkGenerator versuchen.

Der AnchorTagHelper ist mir sowieso die meiste Zeit eher im Weg, da hab ich einiges drum-rum bauen müssen.

Besten Dank für die Hilfe!

31.10.2021 - 15:52 Uhr

Erstmal danke für die ausführlichen Antworten.

Vielleicht kurz zum Hintergrund:
Es ist eine Anwendung zur Abwicklung eines Fahrradbasars.
Die läuft nur in einem lokalen Netzwerk mit maximal 20 Usern, daher würde ich Perfomance nicht so kritisch einstufen.
Grundsätzlich läuft das ganze auch schon und ist stabil.

Ich aber bin gerade dabei die Anwendung von simplen Razor Pages auf MVC zu portieren.
Hauptsächlich weils mir Spaß bereitet und ich will etwas Erfahrung sammeln und was neues Lernen.
Also bin ich auch für komplett andere Ansätze offen.

So nun zum Thema Routing:
Das heißt ich habe Zentral eine Stelle wo ich meine Magic-Strings definiere (z.B. als Konstanten).
In der Anwendung verwende ich dann, wenn ich einen Link benötige (UI, oder in einem Controller) den LinkGenerator.
Wobei ich dann ExtensionMethods für den LinkGenerator habe, welche mir meine spezialitäten abdecken.

In meinen Controllern rufe ich dann nur die simple Redirect(string url) Methode auf.
In meinen Views verwende ich dann anstatt dem AnchorTagHelper direkt <a href="....">.

Habe ich das so richtig verstanden?

Was mir dabei halt nicht so gefällt ist, dass ich dann die ExtensionMethods immer mit meinen Controllern abgleichen muss.

Zum Thema mit dem Delegate:
Das mit dem Delegate anstatt der Func war mein erster Ansatz, das kompiliert mir aber nicht:
CS1662
CS0428

Zum Thema generische Klasse:
Jo das würde so gehen, aber da finde ich die nameof Syntax noch schöner.

Wenn aber Expressions teuer sind, dann kann ich in diesem Fall auch darauf verzichten.
An manchen Stellen kommt man eh nicht drumrum (z.B. in den Views)

Ich denke ich werde mir das mit dem Routing mal näher ansehen, das ist bisher eh noch ein weißer Fleck auf meiner ASP.NET Landkarte 😉

Schöne Grüße,
Xan

31.10.2021 - 12:03 Uhr

Hallo,

ich versuche gerade in meiner ASP.NET Core Anwendung die ganzen Magic-Strings, welche im Zusammenhang mit Controller und Action Namen auftreten, zu refaktorisieren.

Bisher habe ich das immer so gemacht:


RedirectToAction<ProductsController>(nameof(ProductsController.Details), new { id = 1234 });

Den Controller Namen hole ich mir dabei über eine Helper-Methode:


public static string ControllerName<TController>() => typeof(TController).Name.TrimEnd("Controller");

Ich würde in Zukunft jedoch gerne so etwas in der Art aufrufen können:


RedirectToAction<ProductsController>(pc => pc.Details, new { id = 1234 });

Dabei habe ich aber Probleme dass ich dann für jede mögliche Action-Methoden-Signatur eine Überladung bereitstellen müsste.
Also so:


protected RedirectToActionResult RedirectToAction<TController>(Expression<Func<TController, Func<IActionResult>>> action);
protected RedirectToActionResult RedirectToAction<TController>(Expression<Func<TController, Func<int, IActionResult>>> action);

Ich finde das aber nicht sehr schön.

Ich bin leider nicht so fit mit Expressions, gibt es da eventuell etwas mit dem ich den Namen einer Methode zurückbekommen kann?

Oder gibt es überhaupt für mein Grundprobem (Magic-Strings) eine komplett andere Lösung?

Schöne Grüße,
Xan

19.06.2020 - 08:28 Uhr

Ok ich denke ich verstehe.

Das mit den Commands sieht auch ganz interessant aus, damit muss ich mich mal näher beschäftigen.
Hast du da vielleicht noch weiterführende Lektüre bei der Hand?

Danke nochmal für deine ausführlichen Erklärungen 👍

18.06.2020 - 14:16 Uhr

Wow!

Danke Abt, für diese tolle Einführung in das Thema Projections!

Das ist ja eine super Sache, ich wünschte ich hätte mal wieder etwas mehr Zeit mich um mein privates EF Core Projekt zu kümmern.

Nur damit ich das auch richtig verstanden habe:

Ich mache mir also für die verschiedensten Anwendungsfälle (Logik oder UI) einfach meine Projections und das dafür notwendige Profile. Und in der Logik bzw. UI verweise ich dann nur noch auf die Projections. In der UI habe ich dann eventuell noch eine Art ViewModel darum.

Könnte man sagen eine Entity wäre ein Objekt auf Datenbank Ebene und eine Projection wäre dann ein Business Object?

Edit:
Wie wäre das dann wenn ich Daten verändern möchte?
Projections oder auch die KeylessEntity werden ja nicht getrackt.
Wobei ich ja bei Änderungen sowieso im Zweifelsfall mehrer Queries machen muss.

18.06.2020 - 09:31 Uhr

@FZelle
Ok, das klingt für mich nachvollziehbar.

@Abt
Keyless Entity Types kannte ich noch gar nicht, danke für den Hinweis. Damit kann ich in meinem privaten Projekt wo ich EF Core verwende sicher einige Query-Konstrukte optimieren.

Vielleicht noch zum Hintergrund:
Wir haben in der Firma eine Art "ORM" Framework im Einsatz, das aktuell so konfiguriert ist, dass man die Spalten die man haben möchte immer explizit angeben muss. Die Objekte auf die das gemappt wird sind jedoch immer die selben, egal ob ich eine oder alle Spalten einer Tabelle haben will.
Da es in diesem Framework keine Zentrale Stelle gibt wo Daten aus der DB geladen werden, sondern das quer über die komplette Anwendung verstreut ist, bedeutet das einen riesigen Wartungsaufwand.

Daher disktutieren wir aktuell ob wir das Framework nicht umkonfigurieren sodass immer alle Spalten geladen werden.
Darum habe ich hier diesen Thread eröffnet, da ich mir unsicher war ob das generell eine schlechte Idee ist.
Unser "ORM" arbeitet so dass die Spalten im resultierenden SQL explizit angegeben werden. Also denke ich sollten wir das einfach mal testen wie hier die Performance aussieht.

17.06.2020 - 10:10 Uhr

Ah ich denke ich verstehe.

Wenn ich explizit "alle" Spalten abrufe dann ist das besser als * weil ich (bzw. der ORM) die Kontrolle habe was abgefragt wird.

Der ORM könnte ja nicht von allen Spalten wissen.

Die SELECT * Problematik ist also nicht die dass alle Spalten einer Tabelle abgefragt werden, sondern wo die Kontrolle liegt welche Spalten abgefagt werden.

Könnte man das so stehen lassen?

17.06.2020 - 09:02 Uhr

Hallo zusammen,

vor ein paar Monaten gab es in einem Thread hier im Forum die Empfehlung dass "SELECT * " eine schlechte Idee ist:

Es wurde dort auch auf StackOverflow verwiesen warum genau das eine schlechte Idee ist.

Ich verstehe soweit die auf StackOverflow genannten Gründe und finde sie klingen auch nachvollziehbar.

Was ich nicht verstehe, ist jedoch wie das zusammen mit einem Object-Relational-Mapping (ORM) Framework verträgt.
Angenommen ich habe eine Klasse die mir eine Tabelle abbildet.
Wenn jetzt beim SELECT aus der Datenbank nicht alle Spalten abgefragt werden, dann ist ja auch mein Objekt nur zum Teil mit den Daten initialisiert.

Woher soll das ORM Framework wissen welche Spalten es abfragen soll?
Dann müsste ja die Logik, welche mit den Datenobjekten arbeitet (oder mit Objekten die daraus aufgebaut sind) der Datenschicht mitteilen welche Spalten sie benötigt.
Da kann ich mir das ORM Framework ja komplett sparen.

Habe ich da etwas falsch verstanden?
Oder ist das ein Problem, dass ich je nach Tabelle anders lösen muss.

Schöne Grüße,
Xan

verwendetes Datenbanksystem: SQL Server

07.05.2020 - 08:47 Uhr

Hallo,

soweit ich mich erinnern kann musst du bei FormBorderStyle=None solche Dinge selbst Zeichnen.

Siehe hier

20.04.2020 - 08:17 Uhr

Reference ist die Dokumentation der API.

Die Developer Guide kenne ich nicht, aber sieht so aus als ob das eine Schritt für Schritt Anleitung ist wie man mit der API arbeitet.

17.04.2020 - 09:44 Uhr

Hallo ChrisProg,

es gibt auch in der .NET Version eine API:
SAP Crystal Reports, Developer Version for Microsoft Visual Studio

sg
edit: Findet man unter "Related Content" auf der von dir verlinkten Wiki-Seite

14.01.2020 - 11:50 Uhr

Hallo schorge,

in deinem Codebeispiel liegt das Problem daran, dass du nach dem Erzeugen mit new der Referenz jedoch "this.actualMember" zuweist. Somit fügst du jedes mal das gleiche Objekt hinzu.
Die EF Runtime erkennt das und speichert dann nur eines.

Wenn ich dich recht verstehe möchtest du Kopien von Objekten hinzufügen.
Das Kopieren (clonen) musst du selbst implementieren.


class Member
{
    Member Clone()
    {
        return new Member
        {
            a = this.a,
            b = this.b,
            c = this.c
            //  ID hier nicht setzen
        };
    }
}

foreach(var newMember in members)
{
    var member = this.actualMember.Clone();
    member.name = "change values";
    //set null not allowed for unique id long
    //member.id = null;

    db.MemberActivations.Add(member);
}

10.01.2020 - 13:26 Uhr

So eine VM mit Windows ist doch schnell aufgesetzt?

Die gibt es sogar fertig direkt bei Microsoft:
https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/

01.12.2019 - 21:54 Uhr

Hallo

ich hänge gerade an einem Problem wo ich nicht weiß wie ich das lösen soll.

Verwendete Technologie: ASP .NET Core 2.2 Razor Pages

Ich habe eine Page. Auf dieser Page ist ein form. Im form gibt es 2 partial views, welche inputs enthalten.
Beide partial views haben je ein anderes Property des PageModel als Model, sind jedoch vom selben Datentyp.

Wird die Page angezeigt passt noch alles.
Im OnPost haben jedoch beide Properties des Page Models die selben Werte.

Wie löse ich das am besten?
Ich habe ja ein partial view weil ich keinen Code duplizieren will.

Zur besseren Veranschaulichung hier noch etwas Code:
Das PageModel:


public class Ship
{
    public string Name { get; set; }
    public string Crew { get; set; }
}

public class IndexModel : PageModel
{
    [BindProperty]
    public Ship FirstShip { get; set; }
    [BindProperty]
    public Ship SecondShip { get; set; }

    public void OnGet()
    {
        FirstShip = new Ship
        {
            Name = "USS Enterprise",
            Crew = "200-500"
        };
        SecondShip = new Ship
        {
            Name = "USS Voyager",
            Crew = "150"
        };
    }
    public void OnPost()
    {
        //  FirstShip und SecondShip have the same values
    }
}

Die Page:

@page
@model IndexModel

<form method="post">
    <partial name="/Pages/_ShipEdit.cshtml" model="Model.FirstShip" />
    <partial name="/Pages/_ShipEdit.cshtml" model="Model.SecondShip" />
    <input type="submit" value="save" />
</form>

Das partial view "_ShipEdit.cshtml"


@model Ship

<div>
    <label asp-for="Name"></label>
    <input asp-for="Name" />
</div>
<div class="form-group">
    <label asp-for="Crew"></label>
    <input asp-for="Crew" />
</div>

Vielen Dank für eure Hilfe,
sg xan

16.07.2019 - 10:32 Uhr

Mit 26.000 Einträgen langweilt sich der SQL Server

Es geht hier zwar um SQLite, aber auch die SQLite Engine kommt problemlos mit 26.000 Zeilen klar.

Im Gegensatz dazu könnte es bei sehr vielen Spalten schon eher mal zu Problemen kommen.

Außerdem:

Premature Optimization Is the Root of All Evil

22.05.2019 - 15:26 Uhr

Hallo,

Pfadangaben von Nuget Paketen werden in der *.csproj Datei relativ gespeichert. Und zwar relativ im Bezug auf die Solution Datei.

Ich hatte da schon mal Probleme im Zusammenhang mit git submodulen.

Eventuell liegts an was ähnlichem...

sg,
xan

26.02.2019 - 10:13 Uhr

Hallo t2t,

du könntest jeden Service in ein eigenes Repository legen.

Und zusätzlich ein Repository dass alle anderen als submodule enthält und deine Solution zum Debuggen.

sg

30.08.2018 - 15:30 Uhr

Hallo,

die Symbole definiert man zum Compile-Zeitpunkt. Somit kann man mit den Symbolen steuern, welche Teile kompiliert werden sollen.

Anwendungsbeispiele:*Code der z.B. nur in Release oder Debug Builds enthalten sein soll *Falls man für verschiedene .NET Versionen baut, kann es sein dass gewisse Teile des Codes anders sein müssen

Gruß

Edit: typos

14.06.2018 - 14:33 Uhr

Hallo,

eine andere Möglichkeit wäre die Encoding Klasse:


var numbers = new byte[] {51, 57, 65};
var chars = Encoding.ASCII.GetChars(numbers);

xan

07.03.2018 - 10:05 Uhr

Hallo Turmoil,

verwendest du das .NET Konfigurationsmodell?
[Tutorial] Konfigurationsmodell im .NET Framework

Das könnte eventuell dafür verantwortlich sein.

Grüße

EDIT: Sorry hab gedacht es geht um AppData nicht um ProgramData

12.12.2017 - 11:24 Uhr

Hi Bradley,

wäre für solche Daten nicht ein Binärformat (TLV, oder was eigenes) sinnvoller?

lg

07.07.2015 - 15:30 Uhr

Hallo zeh-scharb,

die Eigenschaft LANGUAGE ist rekursiv, darum wird sich euch deine Anwendung aufhängen (Stichwort: Endlos Schleife).

mfg,
Xan

25.03.2015 - 12:13 Uhr

Hallo bb1898,

ein StackPanel ist immer so groß wie sein Inhalt. Da die ListBox verwendet intern ein ItemControl welches sich wie ein StackPanel verhält. Somit sieht es für die ListBox so aus als ob genügend Platz vorhanden ist und es werden keine ScrollBars angezeigt.

Ich kann ebenso wie du auch schon geschrieben hast nur empfehlen ein anderes Container Control zu verwenden.

In deinem Fall würde ich das so machen:


<Grid>
	<Grid.ColumnDefinitions>	
		<ColumnDefinition />
		<ColumnDefinition />
	</Grid.ColumnDefinitions>
	<Grid.RowDefinitions>
		<RowDefinition Height="Auto" />
		<RowDefinition Height="*" />
		<RowDefinition Height="Auto" />
	</Grid.RowDefinitions>
   
	<TextBlock Grid.Row="0" Margin="10,5">Im StackPanel</TextBlock>	
	<Border Grid.Row="1" BorderBrush="DarkBlue" BorderThickness="3" Margin="10,5">
		<ListBox ItemsSource="{Binding AlleZeilen}" />
	</Border>	
	<TextBlock Grid.Row="2" Margin="10,5">Im StackPanel, Ende</TextBlock>
	
	
	<DockPanel Grid.Column="1" Grid.RowSpan="3">
		<TextBlock DockPanel.Dock="Bottom" Margin="10,5">Im DockPanel, Ende</TextBlock>
		<TextBlock DockPanel.Dock="Top" Margin="10,5">Im DockPanel</TextBlock>
		<Border DockPanel.Dock="Top" BorderBrush="DarkRed" BorderThickness="3" Margin="10,5">
			<ListBox ItemsSource="{Binding AlleZeilen}" />
		</Border>
	</DockPanel>
</Grid>

Gruß,
Xan

09.12.2014 - 11:41 Uhr

Hallo KPhoenix,

möglich ist dies auf jeden Fall.

Auf Anhieb fallen mir 2 Möglichkeiten ein:
-Du schickst der laufenden Anwendung eine Nachricht damit sich diese in den Vordergrund bringt
-Du suchst das Handle des Fensters der laufenden Anwendung und bringst dies in den Vordergrund

Um einen Win32 Aufruf kommst du meines Wissens nach nicht rum.

mfg,
XaN

07.11.2014 - 12:37 Uhr

Hallo Movementroboter,

byte ist das Schlüsselwort in C# für den .Net Framework Datentyp Byte

sg,
Xan

28.08.2014 - 16:21 Uhr

Hallo Sharper30,

du kannst deine setup.exe mit einem gültigen Zertifikat signieren (z.B. COMODO), dann gibts auch keine Probleme mit Virenscannern.

mfg,
Xan

29.07.2014 - 11:08 Uhr

Hallo Froggie,

ich würde das im Code-Behind der View machen.

Da es meiner Meinung nach eine reine GUI-Angelegenheit ist, sollte das ViewModel damit nichts zu tun haben.

mfg,
Xan

18.07.2014 - 10:27 Uhr

Hallo Michael65589,

entweder per Binary Serialization

oder "zu Fuß" mit dem BinaryReader

mfg,
xan

23.06.2014 - 12:16 Uhr

Hallo trib,

ich habe 2 Dateien:

-Strings.resx
-Strings.de.resx

In der Anwendung kann der Benutzer dann zwischen folgenden Sprachen auswählen:
Englisch (en-US)
Deutsch (en-DE)
Deutsch (en-AT)
Deutsch (en-CH)

Die Auswahl der Region bestimmt dann im deutschen lediglich Formatierungen (Zeit, Datum, Währung, Zahlen. usw.).
Die Texte für alle 3 deutschen Regionen werden dabei automatisch aus der Strings.de.resx Datei verwendet.

Wenn du jedoch Texte hast die in de-DE und de-AT unterschiedlich sind, reicht es meines Wissens nach aus einfach eine zusätzliche Datei Strings.de-AT.resx anzulegen in der lediglich die Texte enthalten sind, die anders sind.

Aber mit einem Kleinen Testprojekt lässt sich das sicher schnell herausfinden.

mfg,
Xan

14.04.2014 - 14:42 Uhr

Da hat wohl jemand wenig Vertrauen in die if-Abfrage:


if (oldItems != null)
{
	if (oldItems != null)
	{
		...
	}
	...
}

Gerade im Code vom WPFToolkit gefunden.
😁

28.03.2014 - 15:29 Uhr

Hallo DERKLAUS,

ich denke Taipi88 hat damit nicht gemeint dem Benutzer eine Exception anzuzeigen. Im anderen Fall zeigt man dem Benutzer ja auch nicht true oder false an, sondern eine Meldung in der genau steht was nicht funktioniert hat.

Eine Exception kann man ja abfangen, und auswerten um dem Benutzer dann etwas anzuzeigen dass dieser auch versteht.

Die Lösung mit den Tuplen finde ich nicht gerade schön. Da ist die Lösung von inflames2k schon um einiges eleganter.

mfg,
xan

21.03.2014 - 15:36 Uhr

Hallo Destiel,

da wirst du um ein Template nicht rummkommen.

Hier solltest dazu eigentlich alles finden:
ComboBox Styles and Templates

mfg,
xan

19.03.2014 - 16:05 Uhr

Hallo Farma,

der Name würde sowieso nicht angezeigt werden da du als DisplayMemberPath "Alter" angibst. Somit müsste eigentlich das Alter angezeigt werden. Ich weiß aber nicht genau ob WPF in diesem Fall ToString() aufruft.

Wenn du willst dass die ListBox den Namen anzeigt musst du diesen als DisplayMemberPath setzen.

mfg,
xan

07.03.2014 - 15:39 Uhr

Hallo Der_Blob,

mit nullen ist das noch nicht getan, denn der Timer implementiert IDisposable -> man muss Disopose aufrufen sonst läuft der Timer munter weiter.

@Krabbelfiechle:
Du musst dir die Instanzen auf die Timer die du erstellst merken und diese dann Disposen (stoppt auch den Timer) anschließend kannst du das Fenster schließen.

mfg,
XaN

21.11.2013 - 16:59 Uhr

Hallo elTorito,

also Vorteil hat es wenn überhaupt nur einen Performance Vorteil. Lesbarer und auch wartbarer ist es auf jeden Fall, wenn du alles über die Serialisierung machst.

Vor allem wenn sich deine Klasse ändert die du serialisierst, dann musst du an jeder Stelle wo du manuell die XML Datei veränderst Anpassungen machen.

mfg,
xan

21.11.2013 - 15:44 Uhr

Hallo elTorito,

nimmst du denselben Stream zum Lesen und zum Schreiben her?

Falls ja wird beim Lesen des Inhalts die Position im Stream an dessen Ende gesetzt und beim Schreiben von der Position weitergeschrieben.

Setz mal die Position des Streams auf den Start bevor du in den Stream schreibst.

Ist zwar nicht so gut, wenn der neue Inhalt kürzer sein sollte als der alte, aber zum Testen sollte es kein Problem sein.

Meiner Meinung nach wäre es am sinnvollsten das Laden und Speichern mit 2 seperaten Streams durchzuführen, wobei du dann den Stream zum Speichern mit Create erzeugen kannst.

Gruß,
Xan

21.11.2013 - 11:25 Uhr

Hallo elTorito,

kann es sein dass du den Konstruktor des IsolatedStorageFilesStream mit FileMode=Append aufrufst?

gruß,
xan

05.11.2013 - 12:09 Uhr

Hallo thetemplar,

meines Wissens wäre der CommonApplicationData Ordner hierfür geeignet.

Ansonten einfach mal hier schauen ob was passendes dabei ist:
Environment.SpecialFolder

mfg,
xan

17.06.2013 - 12:18 Uhr

Hallo Manuals,

dein Problem mit dem Tagwechsel bekommst du mit der Add-Methode von DateTime hin.

z.B.

DateTime.Now.Add(<timespan aus deiner DB>)

Schönen Gruß,
Xan

PS: UTC-Universal Time Coordinated

07.06.2013 - 14:12 Uhr

Hallo cualalumpur,

könnte eventuell daran liegen dass du bei deinem Grid IsHitTestVisible="False" setzt.

Siehe auch UIElement.IsHitTestVisible

Gruß,
xan

07.06.2013 - 13:03 Uhr

Hallo KPhoenix,

soweit ich weiß werden Resourcen nicht per 'Name' sonder per 'Key' identifizert.
Also so:


<Style x:Key="tbStyle" TargetType="TextBox">

Gruß,
xan

17.05.2013 - 16:29 Uhr

Hallo,

auch wenn du das Problem schon gelöst hast:
Eine schönere Lösung wäre mit einer .Net PDF Komponente wie z.B. PDFsharp den Text zu Suchen.

Schöne Grüße,
Xan

16.05.2013 - 17:14 Uhr

Ich denke je weiter du dich von der Österreichisch/Deutschen Grenze entfernst, desto weniger Arbeitgeber können was mit dem Begriff HTL anfangen.

Im Bereich wo man als Grenzgänger tätig ist, werden die meisten Arbeitgeber schon zumindest mal davon gehört haben.