Bislang habe ich immer die DefaultCredentials
für den request selbst gesetzt, aber nicht für den proxy im request. Nun setze ich
beides, einmal über UseDefaultCredentials und im Proxy nochmal. Letzter Schritt
hatte bislang gefehlt.
ich habe ein Programm mit dem ich einen Webrequest durchführe. Dazu möchte ich die Proxy Einstellungen des Internet Explorers vewenden und auch die Credentials des angemeldeten Users.
Problem 1: Hat der Anwender einen Proxy, so wirft die GetResponse-Methode eine Exception mit HTTP Statuscode 407 Proxy Authentifizierung notwendig. Nun frage ich mich warum der User nicht mitgegeben wird (default credentials)?
Problem 2: Aktuell fange ich den Fehler ab und zeige einen Dialog zur Eingabe von Name und Passwort an. Dann führe ich einen weiteren Request durch und setze die credentials manuell, bekomme dann aber einen HTTP Statuscode 400 (Bad Request - Die Anfrage-Nachricht war fehlerhaft aufgebaut).
Wie kann ich am einfachsten die Einstellungen des Internet Explorers mit dem angemeldeten Anwender verwenden?
Hallo zusammen. Ich habe eine Druckmethode die auch entsprechend funktioniert.
System.Printing.PrintDocumentImageableArea ia = null;
System.Windows.Xps.XpsDocumentWriter w = System.Printing.PrintQueue.CreateXpsDocumentWriter(ref ia);
if (w != null)
{
// set size on one page
DiagramPaginator dp = (DiagramPaginator)myControl.DocumentPaginator;
dp.PageSize = GetPageSize();
// get print ticket
LocalPrintServer printServer = new LocalPrintServer();
PrintQueue printQueue = printServer.DefaultPrintQueue;
PrintTicket ticket = printQueue.UserPrintTicket;
// set ticket properties
ticket.PageOrientation = PageOrientation.Landscape;
Size pageSize = GetPageSize();
pageSize.Width = pageSize.Width / 0.96;
pageSize.Height = pageSize.Height / 0.96;
// set page media size does have no effect -> bug
ticket.PageMediaSize = new PageMediaSize(pageSize.Width, pageSize.Height);
w.Write(dp, ticket);
}
Wenn ich per PageMediaSize eine vordefiniertes Papierformat angebe, dann wird
mein Druck auch in dem Format erstellt. Bei der Konstrukturvariante der variablen Breite und Höhe erhalte ich meinen Ausdruck immer in A4 (Standard vom Drucker).
danke für die Info.
Aktuell überlege ich mir, ob ich eine Klassenbibliothek erstelle mit gemeinsamen Funktionalitäten und drei separaten Projekten. Wäre zumindest eine übersichtliche Aufteilung.
ich möchte mein Programm gerne in verschiedene Editionen unterteilen.
Also z.B. Light, Standard und Professional.
D.h. dass die Professional bspw. eine etwas andere GUI besitzt mit mehr Funktionen, die in den anderen beiden Editionen nicht vorhanden sind. Weiterhin kann es sein, dass bei Aufruf von Funktionen zusätzliche Dialoge erscheinen, in denen der Anwender weitere Einstellungen vornehmen kann.
Zusätzlich hat mein Projekt einige Verweise auf DLLs, die ich je nach Edition eben benötige oder nicht.
Welche "unkomplizierten" Lösungsmöglichkeiten habe ich bei der Erstellung in Microsoft Visual Studio. Ich vermute, dass die Verwendung von unterschiedlichen Projekten sehr viel redundanter Code bedeutet?!
Über die Suche bin ich nicht fündig geworden. Freue mich über "unkomplizierte" Lösungsansätze
Hallo, ich habe weitere Einschränkungen vorgenommen.
Ich möchte eine TreeView mit folgendem Typeninhalt aufbauen.
Ich habe eine Collection mit 3 Subcollections verschiedenen Typs (wobei die Reihenfolge immer gleich ist). Der letzte der 3 Subcollections hat wiederrum 2 Collections.
Jetzt versuche ich das ganze über HierarchicalTemplates aufzubauen und jeden Datentyp zu definieren.
In dem Datentyp Root definiere ich dass es 3 Subcollections gibt.
Die weiteren DataTemplates definieren wie diese angezeigt werden sollen.
Schaut dann so aus:
Rufe ich diesen Dialog aus meinem Hauptfenster aus, so erhalte ich folgende Exception:
"Das angegebene untergeordnete Element muss vom aktuellen übergeordneten Visual-Objekt getrennt werden, bevor es an ein neues übergeordnetes Visual-Objekt angefügt wird."
Ist die Collection leer, kann ich den Dialog öffnen. Die Observable Collection die ich öffnen möchte ist bereits im Hauptfenster gebunden. Im Dialog selbst möchte ich daran nichts verändern, nur eben die Daten nochmals anzeigen. Liegt es am doppelten Binding oder wie kann ich mit der Collection umgehen?
Hallo und danke für die Anregungen. Ghost Cursor gefällt mir nicht da der Mauszeiger vollständig durch das Bild ersetzt wird. Fällt also leider raus.
Der Adorner Eintrag von Bea Stollnitz unterstützt kein ContentControl, werde es aber anschauen und wohl eine eigene Adorner Variante bauen.
Jemand noch eine Idee wie es mit dem Popup klappen könnte? :)
Für eine drag / drop operation möchte ich ein Popup mit einem child vom Typ Image unter dem Mauszeiger anzeigen (ähnlich wie bei einem Verschieben von Dateien im Windows Explorer).
Solange das Popup offen ist erkennt der Mauszeiger nicht mehr dass er sich auf dem richtigen Control für das drop event befindet.
Ich möchte nun dass für die Maus das Popup nicht existent ist. Ich habe hierzu
für das Popup als auch für das Image IsHitTestVisible = false gesetzt.
ich habe ein Webbrowsercontrol in dem ich eine HTML Datei anzeigen lassen möchte, also nichts wirklich spannendes.
Hierzu habe ich eine HTML-Datei (die später mehrsprachig existieren soll) mit einigen Bildern.
Diese HTML-Datei sowie die Bilder habe ich als "Embeded Resource" in das Projekt mit aufgenommen.
Nun möchte Ich die HTML-Seite mit den Bildern anzeigen lassen.
Variante 1: Ich lese die HTML Datei als Stream aus und übergebe den Stream anschließend meinem Webbrowser-Control:
var streamHTML = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(
"MeinProjekt.Resources.Manual.htm"
);
Die Bilder können natürlich nicht zugeordnet werden, daher sehe ich nur den Text.
Variante 2: Ich erstelle eine HTML Datei mit Inline Grafiken. Ich habe aus Word eine Datei als .mht / .mhtml erstellt. Das Webbrowsercontrol kann dies jedoch nicht vernünfigt anzeigen.
Variante 1 würde mir gut gefallen, da ich später die HTML-Seite mit unterschiedlichen Sprachen hinterlegen und auf die gleichen Bilder verweisen könnte. Wie bekomme ich es aber hin, dass der Stream auf die eingebetteten Bilder verweisen kann?
vielen Dank für die Antworten.
Die Anwendung .Netz habe ich auf mein .NET Framework kompiliert. Leider war die Anwendung nach dem Zusammenfügen nicht mehr ganz die gleiche (Icons in der Anwendung waren verschwunden...).
ich habe aus Komfortgünden die folgende Funktion in die App.xaml.cs eingefügt,
die mir bei jedem kompilieren direkt eine fertige Executable erstellt:
Über den Artikel von Jeffrey Richter (hier der Artikel) bin ich auf die AssemblyResolve-Variante für meine Anliegen gestossen.
Habe die Historie des Forums und etliche Google Anfragen gestartet, leider ohne Erfolg. Vielleicht könnt ihr mir einen Rat geben:
Ich möchte gerne diverse Dlls von Drittanbietern in eine EXE einer WPF-Anwendung integrieren, analog dem oben genannten Artikel. Hierzu soll die DLL in die EXE eingebunden werden und durch das AssemblyResolve Event gefunden werden.
Meine Vorgehensweise:
Ich habe zusätzlich zum Verweis der DLL die Dll selbst zum Projekt hinzugefügt (hinzufügen -> vorhandenes Element) und den Build-Vorgang auf eingebettete Ressource umgestellt.
Folgenden Code habe ich verwendet:
using System;
using System.Reflection;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace Simple
{
/// <summary>
/// Interaktionslogik für MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
AppDomain.CurrentDomain.AssemblyResolve += (sender, args) =>
{
String resourceName = "AssemblyLoadingAndReflection." +
new AssemblyName(args.Name).Name + ".dll";
using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
{
Byte[] assemblyData = new Byte[stream.Length];
stream.Read(assemblyData, 0, assemblyData.Length);
return Assembly.Load(assemblyData);
}
};
InitializeComponent();
Test();
}
private void Test()
{
DLLClass Test = new DLLClass(); //hierzu ist die DLL notwendig
}
}
}
Ich bin mir nicht sicher ob die Position von AssemblyRessolve in dieser WPF-Anwendung die richtige ist. Zumindest wird diese ausgeführt, bevor
das Testobject initiiert wird.
Nun gehe ich in mein Debugverzeichnis und lösche die DLL, die das Programm ja benötigt. Die Anwendung kann ohne die DLL nicht ordnungsgemäß gestartet werden, obwohl ich an der Dateigröße der EXE sehe, dass die dll integriert sein muss.
Ich nehme an, dass ich das AssemblyResolve Event woanders hinterlegen muss?
geht zwar noch nicht. Aber ich forste mal weiter. Die Denkanstösse fand ich schon gut
und mit jedem Tag verfliegt ja etwas Nebel und die Zusammenhänge werden klarer.
ja genau, um das Avalon-Dock Framework geht es. Ich habe einige Bindings bei mir die ich nach der Anleitung umstellen möchte. Eine Fehlermeldung erhalte ich nicht.
Ich möchte gerne den Titel des Avalon-Dock Fensters an eine Variable binden.
Das hat auch so funktioniert:
.. Title="{Binding strKontaktName}"
Den DataContext setze ich im Code:
KontaktDetails.Datacontext = MeineKontakte;
Das Framework hat aber das Problem, dass bei einer abkopplung der Datacontext verloren geht, es verschwindet also der Name. Der Titel ist nach Abkopplung leer. Als Lösung ist vorgeschlagen, das Binding komplett in XAML durchzuführen.
Meines erachtens muss ich Klassenname, Objektname und Eigenschaft mitgeben. Mache ich das nach folgendem Schema ist der Titel nicht nur nach der Abkopplung leer, sondern von Anfang an. D.h. das Binding kann kein einziges mal erfolgen.
Bei mir nicht.... mit Application.Current erhalte ich ne Fehlermeldung:
Fehler 1 Der Typ "Application"wurde nicht gefunden. Beachten Sie, dass bei Typnamen die Groß- und Kleinschreibung berücksichtigt wird.
Mit Appl.Current geht es. Ich habe aber z.T. gelesen dass manche Application.Current verwenden. Kann also sein dass das bei dir geht :)
Bei mir schluckt er zwar Appl.Current, aber leider erhalte ich nicht das gewünschte Ergebnis. Bin nicht sicher ob ich da noch nen grösseren Denkfehler habe....
Cinch und Caliburn kannte ich nicht. Schau ich mir mal an.
Für einen konkreten Fall möchte ich gerne das Binding komplett in XAML vornehmen.
Folgendes Statement wird zwar kompiliert, aber ich erhalte noch nicht das Binding:
Hallo, ich seh gerade den Wald vor lauter Bäume nicht....
Ich habe ein Binding in XAML das auch funktioniert
Geht:
... Title="{Binding strName}" >
ich habe ein Datacontext erstellt und so funktioniert die Bindung auch.
Aufgrund eines Frameworks, welches mir empfiehlt aus Buggründen die vollständige Definition in XAML vorzunehmen, möchte ich die Bindung nun umstellen auf XAML und habe folgendes Ziel (war als Beispiel dabei)
Beispiel:
zu 2) Erledigt - Konnte mit Frage 1 behoben werden.
zu 3) Ergänzende Erläuterung: Wenn ich ein Element verändere (ausserhalb des DataGrids) dann erhält mein DataGrid automatisch ein Update und das Property wird mit dem korrekten aktuellen Wert angezeigt. Füge ich ausserhalb des DataGrids ein Element hinzu, wird dies im DataGrid mit angezeigt. Lösche ich ein Element ausserhalb des Datagrids, sehe ich das Objekt weiterhin im DataGrid.
Mit dem Binding bin ich noch nicht wackelfest.
Frage zum Binding: Mit deinem Hinweis verändere ich das Binding des DataGrids wie folgt:
Für Mode und UpdateSourceTrigger benötige ich den Path. Bislang habe ich im Path ein konkretes Property angegeben. Welche Bezeichnung wird erwartet? Am meisten Sinn würde doch der Name der Observable Collection machen, die ist aber doch kein Path?!
1. Das Grid zeigt mir nicht nur die 4 gebundenen Eigenschaften der Elemente sondern zusätzlich noch alle Eigenschaften die das Element besitzt. Mein Verdacht liegt auf dem ItemsSource="{Binding}" im DataGrid. Lasse ich das weg, wird nichts mehr angezeigt. Ich möchte jedoch nur die 4 Eigenschaften anzeigen lassen, nicht alle Eigenschaften.
2. Die Scrollbar VerticalScrollBarVisibility="Visible" ist zwar sichtbar aber nicht aktiv.
3. Neue Elemente die der Observeable Collection hinzugefügt werden, werden auch im DataGrid aktualisiert angezeigt. Lösche ich ein Element aus der Observeable Collection wird dies nicht im DataGrid entfernt.