Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von chriscolm
Thema: ServerSentEvents - IIS hängt sich auf
Am im Forum: Web-Technologien

Moinsen,

habe ein bisschen mit SSE herumgespielt. nach einigen GET-Requests hängt sich der IIS (auf Windows 10) komplett auf. Ich kann folgende Fehlermeldung in C:\Windows\System32\LogFiles\HTTPERR\httperr1.log finden:

Fehler
Connection_Abandoned_By_ReqQueue ASP.NET+v4.0

Die Anwendung ist eine ASP.NET 4.5 Webanwendung.
Clientseitig kommt folgender js-Code zum Einsatz:
$.get(apppath + "/api/resourceapi", { key: "UH" }).done(function (hash) {
    // alert(hash);
    var source = new EventSource(apppath + "/api/Notification/" + hash);
 ...


Damit wird folgender Server-Code aufgerufen:


public class NotificationController : ApiController
    {
		
		private static ConcurrentDictionary<int, StreamWriter> _subscriber = new ConcurrentDictionary<int, StreamWriter>();
		

        // GET api/notification
        public HttpResponseMessage Get(HttpRequestMessage request, int id)
        {
			HttpResponseMessage response = request.CreateResponse();
			Action<Stream, System.Net.Http.HttpContent, TransportContext> a = new Action<Stream, HttpContent, TransportContext>((e, f, g) => {
					_subscriber.AddOrUpdate(id, new StreamWriter(e), (key, oldValue) => new StreamWriter(e));
				});
			response.Content = new PushStreamContent(a, "text/event-stream");
			return response;					
        }
}

Nach etwa dem 5 Aufruf hängt sich der IIS auf, nimmt keine Anfragen mehr entgegen und muss beendet und neu gestartet werden.

Irgendwer eine Idee?

Grüße

Christian

Thema: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

TabPicture1.Ursprungsbild.Bild = CreateEmptyBitmap(); -> Wo erzeugst Du eine Instanz von Ursprungsbild? In Deinem Beispiel ist Ursprungsbild NULL

Thema: Zeilenumbruch in FieldCode
Am im Forum: Office-Technologien

Moinsen,

ich benutze ein .docx mit Mergefields, um ein Word-Dokument mit Daten zu füllen. Nun schein Word beim Erstellen der Vorlage die Mergefields manchmal auf mehrere xml-Knoten aufzuteilen, wie ein Blick mit dem productivityTool aus dem SDK zeigt:


<w:r w:rsidR="006F29DF">
  <w:fldChar w:fldCharType="begin" />
</w:r>
<w:r w:rsidR="006F29DF">
  <w:instrText xml:space="preserve"> MERGEFIELD  TBL_Workflow_VBFBerichtTitel  \* MERGEF</w:instrText>
</w:r>
<w:r w:rsidR="006F29DF">
  <w:instrText xml:space="preserve">ORMAT </w:instrText>
</w:r>
<w:r w:rsidR="006F29DF">
  <w:fldChar w:fldCharType="separate" />
</w:r>


Run run74 = new Run(){ RsidRunAddition = "006F29DF" };
FieldCode fieldCode5 = new FieldCode(){ Space = SpaceProcessingModeValues.Preserve };
fieldCode5.Text = " MERGEFIELD  TBL_Workflow_VBFBerichtTitel  \\* MERGEF";

run74.Append(fieldCode5);

Run run75 = new Run(){ RsidRunAddition = "006F29DF" };
FieldCode fieldCode6 = new FieldCode(){ Space = SpaceProcessingModeValues.Preserve };
fieldCode6.Text = "ORMAT ";

Im Beispiel oben ist jetzt nur der Kommentar des Mergefields umgebrochen, aber manchmal passiert das auch etwas früher, nämlich genau in dem Teil, der den Bezeichner für die einzufügenden Daten darstellt, in diesem Beispiel TBL_Workflow_VBFBerichtTitel. Ich habe da noch keine Regelmäßigkeit festestellen können, nur wenn mitten im Bezeichner getrennt wird, ist es natürlich doof, die Daten an der richtigen Stelle unterzubringen. Lässt sich das irgendwie abstellen, dass der Bezeichner auf mehrere Knoten aufgeteilt wird?

Viele Grüße

Christian

Thema: Problem mit dem MVVM Pattern
Am im Forum: GUI: WPF und XAML

Moinsen,

für Deinen geschilderten Anwundungsfall brauchst Du noch kein propertyChanged. Die Zuweisung erfolgt während des Erstellens, die Daten sind schon vorhanden, an die gebunden wird. Wenn Du aber auf Änderungen reagieren willst, musst Du PropertyChanged auch in der GUI abonnieren, also in der Textbox muss so etwas stehen:
TextBox Text={Binding Name, UpdateSourceTrigger=PropertyChanged}...

Grüße

Christian

Thema: web.config / ASP.NET Development Server
Am im Forum: Web-Technologien

Moinsen, mit IIS das gleiche Problem. Welche verdammte web.config wird da verwendet? Und wie bekomme ich da meinen eigenen Senf rein? Ich versuche seit heut Mittag "auf die Schnelle" mal eben was auszuprobieren...grummel.

Grüße

Christian

Thema: web.config / ASP.NET Development Server
Am im Forum: Web-Technologien

Moinsen,
ich habe ien ASP.NET MVC4 Projekt erstellt mit der vorgegebenen Ordnerstruktur. Was muss ich tun, damit die in dem Ordner Views vorhandene web.config ausgewertet wird, wenn ich das Projekt debugge bzw. über F5 starte? Visual Studio benutzt den integrierten Development Server. Alle Änderungen in der web.config bleiben unberücksichtigt, aber Syntaxfehler werden schon angemeckert (!?!). Ich möchte den Abschnitt connectionStrings auslesen:


<configuration>
  <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <connectionStrings>
    <add name="DB" connectionString="Data Source=192.168.0.15,1433;Initial Catalog=PV_xxxxx_5_1;User Id=xxxxx;Password=xxxxxxx;Connection Timeout=30;"/>
  </connectionStrings>

mit diesem Code:


var css = System.Web.Configuration.WebConfigurationManager.ConnectionStrings;
			if (css.Count > 0) {
				var result = css[0].ConnectionString;
				return result;
			}
Ich bekomme aber immer einen default-String ("data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=") zurück :-(

Mit ratlosen Grüßen

Christian

Thema: Suche Zeiterfassung(ssystem) per Mobiltelefon
Am im Forum: Smalltalk

Hallo zusammen,
ich suche ein Zeiterfassungssystem. Mitarbeiter sollen per Mobiltelefon Arbeitsbeginn und -ende dokumentieren. Darüberhinaus wäre es wünschenswert, wenn die Mitarbeiter eine Art Tätigkeitsschlüssel mit übertragen können. Der Anruf beim Zeiterfassungssystem soll kostenlos möglich sein. Die erfassten Zeiten sollen zur weiteren Bearbeitung in ein bereits bestehendes Programm importiert werden können, es muss also eine möglichst einfach anzusprechende Schnittstelle vorhanden sein. Ich habe einige Lösungen gefunden, die aber nicht so richtig ins Anforderungsprofil passen (An und Abmeldung per SMS) oder einfach eine Nummer zu mächtig (und damit vermutlich auch zu teuer) sind. Hat jemand Vorschläge?

Viele Grüße

Christian

Thema: Controls in Listview -> SelectedItem -> CommandBinding
Am im Forum: GUI: WPF und XAML

Moinsen,
ich habe ein Listview, dessen Items weitere Controls enthalten (TextBox, CheckBox usw). Damit das ListViewItem selektiert wird, habe ich folgenden Syle definiert:


<ListView.ItemContainerStyle>
	<Style TargetType="{x:Type ListViewItem}">
		<Style.Triggers>
			<Trigger Property="IsKeyboardFocusWithin" Value="True">
				<Setter Property="IsSelected" Value="True"/>
			</Trigger>
		</Style.Triggers>
	</Style>
</ListView.ItemContainerStyle>

Der Teil funktioniert soweit auch. Das Problem welches ich nun habe ist, dass ein CommandBinding nicht mehr Funktioniert.
Im Zusammenhang sieht das etwa so aus:

 <Button Command="{Binding DeleteRecordCommand}"                         
                        Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}">
                    <Image Source="Images/Delete.png"
                           Stretch="None" />
</Button>

<ListView ItemsSource="{Binding Topics}"
                      SelectedItem="{Binding SelectedTopic}"
                      SelectionMode="Single">
                <ListView.InputBindings>
                    <KeyBinding Key="Delete" 
                                Command="{Binding DeleteRecordCommand}" />
                    <KeyBinding Key="Add"
                                Modifiers="Control"
                                Command="{Binding AddRecordCommand}" />
                    <KeyBinding Key="N"
                                Modifiers="Control"
                                Command="{Binding AddRecordCommand}" />
                    <MouseBinding MouseAction="LeftClick"
                                  Command="{Binding AddRecordCommand}" />
                </ListView.InputBindings>    
...               
Der DeleteRecordCommand (ein ICommand), an den der Button gebunden ist, funktioniert nur noch zum Teil, es wird CanExecute noch abgefragt, aber Execute wird nicht ausgeführt, wohingegen das InputBinding vom Listview weiterhin funktioniert.
Nehme ich den Style wieder raus, funktioniert auch wieder der an den Button gebundene Command.

Mit ratlosen Grüßen

Christian

Thema: OfficeOpenXml und Bookmark -> Kopf wiill auf Tischkante
Am im Forum: Office-Technologien

Ok, das kann ich soweit nachvollziehen. Aber string und Id sind ja nicht nur unterschiedliche Objekte, sondern auch noch unterschiedliche Typen! Da ist an der einen Stelle m.E. der =-Operator so implementiert, dass er sich verhält, wie erwartet und an anderer Stelle nicht.

Thema: OfficeOpenXml und Bookmark -> Kopf wiill auf Tischkante
Am im Forum: Office-Technologien

Moinsen,
nachdem ich feststellen musste, dass LazyEvaluation im Zusammenhang mit der Bearbeitung von OpenXml offenbar sehr böse ist, hier noch eine Sache, die zwar gelöst, aber nicht verstanden ist:


var bookmarks = subDoc.MainDocumentPart.Document.Body.Descendants<BookmarkStart>();
foreach (var bkStart in bookmarks) {
	string sid = bkStart.Id;
	var debg = subDoc.MainDocumentPart.Document.Body.Descendants<BookmarkEnd>().FirstOrDefault(b => b.Id == bkStart.Id);
	var bkEnd = subDoc.MainDocumentPart.Document.Body.Descendants<BookmarkEnd>().FirstOrDefault(b => b.Id == sid);
	if (bkEnd != null) {
		...
	}
	if (debg != null) {
		throw new Exception();
	}
Warum muss ich erst die Bookmark-id in einen string packen, um anschließend mit der Bookmark-Id vergleichen zu können? Die Exception wird nie geworfen, das heißt, bkEnd.Id == bkStart.Id ist immer false (auch wenn die Werte gleich sind), wohingegen bkEnd.Id == sid bei gleichen Werten auch true ergibt...Auch wenn ich mit Equals vergleiche. Hrmpf....

Grüße
Christian

Thema: docx Dokument / OpenXML - text der Kopfzeile ändern
Am im Forum: Office-Technologien

Moinsen,

ich habe ein paar Methoden gebaut, die in einem docx-Dokument den Text der Kopf- und Fußzeilen austauschen, im Prinzip so als wenn man dort ein Seriendruckfeld platzieren könnte. In der Dokumentenvorlage wird der Schlüssel (im Beispiel INFTitel) in die Kopfzeile eingetragen, der Code soll das dann durch einen anderen Text ersetzen. Mit den Fußzeilen funzt das auch, nur die Kopfzeile weigert sich, obwohl der ausgetauschte Text im OpenXML steht (siehe angehängtes Bild)


private void Process<T>(WordprocessingDocument doc, T data) {
	var main = doc.MainDocumentPart.Document;
	DataProperties<T> dp = new DataProperties<T>(data); 
	// data ist die Datenklasse, aus diesen Daten wird das Dokument befüllt
	// DataProperties<T> besorgt letzendlich die benötigten Werte 
	// Kopf und Fußzeilen
	var header = doc.MainDocumentPart.HeaderParts;
	var footer = doc.MainDocumentPart.FooterParts;
	this.PreProcessHeader(header, dp);
	this.PreProcessFooter(footer, dp);
	....
	....
}			

private void PreProcessHeader<T>(IEnumerable<HeaderPart> header, DataProperties<T> dp) {
	foreach (var h in header) {
		this.ProcessHeaderOrFooter(h.Header, dp);
		h.Header.Save();
	}
}

private void PreProcessFooter<T>(IEnumerable<FooterPart> footer, DataProperties<T> dp) {
	foreach (var f in footer) {
		this.ProcessHeaderOrFooter(f.Footer, dp);
		f.Footer.Save();
	}
}		

private void ProcessHeaderOrFooter<T1, T2>(T1 element, DataProperties<T2> dp) where T1 : OpenXmlElement {			
	var textNodes = element.Descendants<Text>();
	foreach (var t in textNodes.Where(p=> p.Text!=null &&  p.Text.StartsWith("INF")==true)) {					
		FieldProperties fp = new FieldProperties(t.Text); 
		// ermittelt Feldnamen der Mergefields, Formatstrings etc aus dem Dokument
		t.Text = dp.GetValue(fp); 
		// dp.GetValue holt aus der Datenklasse den Wert der Property, der ins Dokument geschrieben werden soll
	}			
}		
Wie gesagt, Fußzeile passt, Kopfzeile nicht, da wird immer der Platzhalter angezeigt, der übrigens in

doc.PackageProperties.Title
steht.
Und genau dieser Titel wird ins Dokument geschrieben, warum auch immer.

Grüße

Christian

Thema: Rechtschreibprüfung wird bei ClickOnce nicht unterstützt
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Moin,
meines Wissens wird bei der Rechtschreibprüfung auf die Wörterbücher von Word zurückgegriffen, möglicherweise ist auf dem Client kein Word installiert.

Grüße

Christian

Thema: [erledigt] Konvertierung - Unterschied Convert.ToByte(i) und (byte)i
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Moinsen,

ich bevorzuge in geeigneten Fällen Convert.To...
Wenn das Argument aus irgendwelchen Gründen null ist oder sonstwie nicht passt, gibt Convert.To... den Default-Value des Typs zurück.

object o = null;
int i = (int)o; // -> wummmss!!!
int i = Convert.ToInt32(o); // -> i = 0;

Grüße

Christian

Thema: Gerätebestand visualisieren, von Geräten mit unterschiedlichen Eigenschaften/InterfaceVersionen
Am im Forum: Rund um die Programmierung

Moinse,
also ich würde das in etwa folgendermaßen lösen:
Oberfläche mit WPF und exzessive Benutzung von Datenbindung,
Ein Masterinterface liest die passende version aus. Dann wird entschieden, welche konkreten Klassen geladen werden müssen.
Eine Klasse enthält eine Liste mit Instanzen einer Bedienelementklasse, die etwa so aussehen könnte:


public class Bedienelement{
 public Type Datentyp {get;set;}
 public string Display{get;set;}
 public object Value{get;set;}
}

An die GUI wird an ein ItemsControl diese Liste mit Bedienelementen gebunden, über einen TemplateSelector kannst Du auswählen, ob eine Checkbox, ein Textfeld oder was auch immer dargestellt werden muss, entscheidend dafür ist der Datentyp in deinem Bedienelement.
Die Klasse, die die Liste mit den Bedienelementen enthält, kann auf Änderungen bzw. Benutzeraktionen (Wert ändern, Speichern o.ä.) entsprechend reagieren. Oder anhand des Masterinterfaces entscheiden, welche Implementation zum Speichern, Ändern usw. geladen werden muss.
Das mal so als grober Denkansatz.

Grüße
Christian

Thema: Neben Festanstellung selbständig tätig sein
Am im Forum: Smalltalk

Hi,
so weit ich weiß, beziehen sich die € 17500,- darauf, ob man von der Mehrwertsteuer befreit ist. Liegt Dein Jahresumsatz über 17500,- musst Du auf jeden Fall MwSt abführen. Unabhängig davon wirst Du auf Deine Einkünfte in jedem Fall Einkommensteuer entrichten müssen.
Und ich würde ganz genau in den Arbeitsvertrag gucken, auf jeden Fall meinen Arbeitgeber über die Nebentätigkeit unterrichten und ganz peinlich darauf achten, dass ich mich nicht an der Entwicklung von Software für die Konkurrenz beteilige.
Grüße
Christian

Thema: Ermitteln, ob in einem Array mehrere aufeinanderfolgende Werte (auch verwürfelt) enthalten sind
Am im Forum: Rund um die Programmierung

Hi,
geh doch Dein sortiertes Array [1,2,3,4,5] rückwärts durch und ziehe immer das nächste Element vom aktuellen ab und zähl, wie oft das Ergebnis 1 ist. Dann hast Du gleich eine allgemeingültige Lösung um auf eine Straße zu prüfen. Jetzt musst Du nur gucken, ob viermal das Ergebnis 1 war oder 5 mal. Achte auf die Indizes!

Grüße
Christian

Thema: ListView SelectedItem DataTemplate
Am im Forum: GUI: WPF und XAML

Moin,
habe ein editierbares ListView mit ein paar Checkboxen. Dummerweise wird beim Anklicken einer Checkbox nicht die entsprechende Zeile des ListView selektiert, was dazu führt, das der Wert aus der Checkbox dem falschen Objekt zugewiesen wird.
Wie kann ich erreichen, dass die Checkbox zugleich die Entsprechende Zeile markiert?


<GridViewColumn Header="{Binding Source={StaticResource Header}, Path=[public]}">
	<GridViewColumn.CellTemplate>
		<DataTemplate>
			<CheckBox IsChecked="{Binding IsPublic}" />
		</DataTemplate>
	</GridViewColumn.CellTemplate>
</GridViewColumn>       
 

Grüße

Christian

Thema: [erledigt] VS-Extension killt Zeilenumbruch im XML-Kommentar
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Danke!

Thema: [erledigt] VS-Extension killt Zeilenumbruch im XML-Kommentar
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Moin,
habe mir vor einiger Zeit mal ein paar VS-Erweiterungen installiert. Eine davon, bläst die Infos etwas auf, die man erhält, wenn man mit der Maus über einen Member fährt und es einen XML-Kommentar gibt. Problem: Die XML-Kommentare werden ohne Zeilenumbruch angezeigt, also u.U. völlig unbrauchbar. Ich weiß allerdings nicht mehr, wie die Erweiterung heißt und irgendwie finde ich auch nichts, was vom Namen her darauf hindeutet, dass es das sein könnte. Habe mal ein Bild angehängt, kann mir jemand sagen, wie die Erweiterung heißt, die das macht?

Vielen Dank und Grüße

Christian

Thema: WPF MessageBox und XP/Vista Style
Am im Forum: GUI: WPF und XAML

Moin,
ich habe ein kleines Problem, eine WPF-MessageBox in "modernen" XP/Vista-Style erscheinen zu lassen.
Ich stricke gerade eine alte Anwendung aus NET 1.1 Zeiten um, entferne die Windows-Forms GUI und ersetze sie durch WPF und trenne GUI von Logik etc.
Im Anwendungsmanifest wird jetzt der für die VisualStyles notwendige Eintrag angemeckert mit der Meldung:

Fehler
Fehler 2 Die Datei "Microsoft.Windows.Common-Controls, Version=6.0.0.0, Culture=*, PublicKeyToken=6595b64144ccf1df, ProcessorArchitecture=*, Type=win32" wurde nicht gefunden."

Das Manifest

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
	<security>
	  <applicationRequestMinimum>
		<defaultAssemblyRequest permissionSetReference="FullTrust" />
		<PermissionSet ID="FullTrust" SameSite="site" Unrestricted="true" />
	  </applicationRequestMinimum>
	</security>
  </trustInfo>
	<dependency>
		<dependentAssembly>
			<assemblyIdentity
				type="win32"
				name="Microsoft.Windows.Common-Controls"
				version="6.0.0.0"
				processorArchitecture="*"
				publicKeyToken="6595b64144ccf1df"
				language="*"
        />
		</dependentAssembly>
	</dependency>

</asmv1:assembly>

Wenn ich auf dem gleichen Rechner ein neues WPF-Projekt anlege, geht es. Was muss ich tun, damit das auch in dem alten Projekt funzt?

Grüße

Christian

Thema: Unterschiedliche vertikale Ausrichtung bei DataBinding und per Xaml zugewiesenem Content
Am im Forum: GUI: WPF und XAML

Zitat von MrSparkle
Hi chriscolm,

dann setz doch einfach das VerticalAlignment für alle Labels auf "Center".

Christian

Hi,
wie ich das zentriert bekomme, ist nicht das Problem (in diesem Fall VerticalContentAlignment), mich interessiert eher das "warum?"
Irgendwer muss sich etwas dabei gedacht haben, bei unterschiedlichen Datentypen unterschiedliche ausrichtungen zu wählen (setze mal voraus, dass bei MS vor dem Programmieren gedacht wird ...)

Thema: Unterschiedliche vertikale Ausrichtung bei DataBinding und per Xaml zugewiesenem Content
Am im Forum: GUI: WPF und XAML

Zitat von winSharp93
Hallo chriscolm,

macht evtl. die TranslationExtension noch irgendwas mit dem Label bzw. dem Text darin?

Nein, die geht nur auf den Inhalt.

Aber wenn ich die Datenbindung ändere, nicht mehr an ein DateTime sondern an einen string binde, ist die Ausrichtung des Contents gleich

Thema: Unterschiedliche vertikale Ausrichtung bei DataBinding und per Xaml zugewiesenem Content
Am im Forum: GUI: WPF und XAML

Hallo,
wie kommt das zustande? Ich habe vier Labels nebeneinander in einem StackPanel. Das erste und dritte Label erhalten ihren Content direkt aus der Xaml-Datei, das zweite und vierte Label über Datenbinding. Stile sind nicht im Spiel. Die vertikale Ausrichtung ist unterschiedlich.


<StackPanel Grid.Column="1"
                    Grid.Row="2"                    
                    Orientation="Horizontal">
            <Label Content="created" Background="Aquamarine"
                   Uid="lbl_created"
                   loc:TranslationExtension.Translate="True" />
            <Label Content="{Binding Created, StringFormat=d}" Background="Bisque" />
            <Label Content="modified" Background="LightSteelBlue"
                   Uid="lbl_modified"
                   loc:TranslationExtension.Translate="True" />
            <Label Content="{Binding Modified, StringFormat=d}" Background="PapayaWhip" />
        </StackPanel>
Und so sieht es aus (siehe Dateianhang):

Grüße

Christian

Thema: Get working Directory mehrerer Projekte (C++ Konsolenanwendung)
Am im Forum: Rund um die Programmierung

Hi,
wie wäre es denn mit einem Postbuild-Script, das die benötigten Daten in eine Datei schreibt, deren Ort per Konvention allen anderen bekannt ist?
Grüße
Christian

(edit) Herbivore hat gerade einen ähnlichen Gedanken gepostet

Thema: [erledigt] ValidationOnDataError, DataTemplate, Binding und Command
Am im Forum: GUI: WPF und XAML

oje, immer diese Kleinigkeiten...jemand sollte mal eine Sprache für syntaktische Grobmotoriker entwickeln :-)

Vielen Dank für die Antwort

Thema: [erledigt] ValidationOnDataError, DataTemplate, Binding und Command
Am im Forum: GUI: WPF und XAML

Hallo,
wie sage ich dem Button im DataTemplate, dass er die Datenvalidierung anstoßen soll:

<DataTemplate x:Key="ToolbarButtonTemplate">            
            <Button Command="{Binding,ValidatesOnDataErrors=True,ValidatesOnExceptions=True}"                    
                    ToolTip="{Binding DisplayName}"                      
                    Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}">                
                <StackPanel Orientation="Horizontal">
                    <Image Source="{Binding ImageUrl}"
                           Width="16" />                    
                    <TextBlock Text="{Binding ToolbarButtonDisplayText}"
                               VerticalAlignment="Center"
                               HorizontalAlignment="Right"/>
                </StackPanel>                                       
            </Button>
        </DataTemplate>
Ich erhalte diese Fehlermeldung beim kompilieren:
Fehler
Fehler 132 Das Tag "Binding,ValidatesOnDataErrors=True,ValidatesOnExceptions=True" ist im XML-Namespace "http://schemas.microsoft.com/winfx/2006/xaml/presentation" nicht vorhanden. Zeile 15 Position 21.

Mit dem DataTemplate wird eine Toolbar gefüllt:
<ToolBarTray DockPanel.Dock="Left">
        <ex:ToolBarEx ItemsSource="{Binding BaseToolbarCommands}"
                      ItemTemplateSelector="{StaticResource ResourceKey=ToolbarItemTemplateSelector}">            
        </ex:ToolBarEx>
    </ToolBarTray>
Der ItemTemplateSelector tut auch nichts aufregendes, der gibt entweder das ButtonTemplate von oben zurück oder einen Separator.

edit: Der angemeckerte namespace ist eingebunden:
<UserControl x:Class="Agenda.client.Presentation.CommonUserControls.BaseToolBar"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"             
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" ... 
und das DataTemplate ist in den Resourcen des UserControl.

Viele Grüße

Christian

Thema: Firebird Datenbank Benutzerdaten
Am im Forum: Datentechnologien

Hi,
SYSDBA und masterkey sind doch Benutzer und Passwort? Allerdings benutzt Du ja offenbar eine eingebettete Datenbank, da gibt es keine Benutzerverwaltung.
Grüße
Christian

Thema: Firebird / FbCommand.ExecuteReader funzt net mehr
Am im Forum: Datentechnologien

Moin,
also der Wurm ist definitiv in der Datenbank, wie ein Analyse mit gfix ans Tageslicht brachte.
Zwei weitere Datenbanken ließen sich problemlos konvertieren, da sagte gfix aber auch, dass die Datenbank in Ordnung sei :-)
Auf zwei Dinge möchte ich noch kurz eingehen, die in den Antworten angesprochen wurden:
Der Ausführungsplan bei SELECT COUNT(*)... oder SELECT COUNT(pk_spalte)... ist der Gleiche, macht also keinen Unterschied. Es wird in beiden Fällen kein Index benutzt.
Wo ist das Problem bei SELECT first...skip.... ohne order by? Läuft ganz sauber durch.

Grüße

Christian

Thema: WPF DatePicker und 01.01.1900 ausblenden
Am im Forum: GUI: WPF und XAML

Wie sieht es denn mit Datenbindung aus? Dann ließe sich über einen Converter das ganze schön lösen:


public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) {			
			if (value is DateTime) {
				DateTime dt = (DateTime)value;
				if(dt == DateTime.MaxValue || dt == DateTime.MinValue){
					return DependencyProperty.UnsetValue;
				}
			}
			return value;
		}

edit: DateTime.MinValue || DateTime.MaxValue natürlich durch entsprechenden Wert ersetzen...

Thema: Firebird / FbCommand.ExecuteReader funzt net mehr
Am im Forum: Datentechnologien

1. ist erstmal relativ egal, es geht erstmal ums Prinzip. Außerdem gibt es da unterschiedliche Meinungen, mag auch vom DBMS abhängen.
2. ExecuteScalar hat nicht funktioniert, deswegen probierte ich den DataReader
3. Firebird hat die Möglichkeit: SELECT FIRST SKIP 400 ...
4. Es scheitert bereits an einer Tabelle mit 1300 Datensätzen.

Wie gesagt, bisher hat es immer zuverlässig funktioniert, auch bei Tabellen mit mehreren 100.000 Datensätzen. Ich habe vorhin mal folgendes probiert:
Im Programm das SELECT-Statement angepasst: SELECT * FROM TABELLE WHERE id ≥ 0 AND id < 100
dann jeweils um 100 erhöht
SELECT * FROM TABELLE WHERE id ≥ 100 AND < 200
usw.
Nach 400 Datensätzen hat sich wieder alles sang und klanglos verabschiedet. Ich vermute ja fast, dass die Datenbank selber irgendwo beschädigt ist, nur kann ich mit FlameRobin alles auslesen. Ist aber nicht ADO.NET.
Naja, mal sehen.