Das Binding sucht im Objekt im DataContext. Wenn es da kein Objekt gibt klettert es den Visual Tree hinauf. So lange bisher ein Objekt findet und sucht dann dort nach dem Property namen.
Das MainViewModel gehört ins DataContext der MainView, dadurch wird das Binding irgendwann darauf stoßen und darin das Property suchen.
Das kannst du entweder aus der CodeBehind aus machen:
public partial class MainView : Window
{
public MainView()
{
InitializeComponent();
DataContext = new MainViewModel();
}
}
Manche MVVM Frameworks arbeiten da aber schlauer, da sagt man sowas wie
var myViewModel = new MainViewModel();
var windowService = ServiceLocator.Resolve<IWindowService>();
windowService.ShowDialog(myViewModel);
und der Servcie sucht selbstständig die passende View, erstellt diese und packt das übergebene ViewModel in dessen DataContext.
So mache ich es nur und biete es auch mit den DW.Services an.
DataContext & Binding = WPF Basics.
Fenster aus ViewModels heraus anzeigen = MVVM Basics. Da fehlt dir einfach die Erfahrung wenn du gerade erst mit dem Pattern zu tun bekommst.
Grundsätzlich:
Die View kann das ViewModel kennen, aber das ViewModel darf keine Ausgaben kennen (keine Fenster, keine MessageBoxen usw).
Hi,
ich habe ein Progamm, mit dem man u.A. Dateien per FTP runterladen kann. (per FtpWebRequest).
Jetzt möchte ich aber gerne die Bandbreite, die genutzt wird, begrenzen.
Meine Idee wäre zu verfolgen, wieviele Bytes in einer bestimmten Zeitperiode runtergeladen wurden (z.B. pro Sekunde, oder pro Zehntelsekunde etc.) und wenn das Limit erreicht ist, per Sleep für den Rest der Zeitperiode den Thread anzuhalten (der FTP-Transfer läuft in einem extra Thread).
Ist diese Idee praktikabel oder gibt es bessere Lösungen?
Gruß
cesi schrieb:
wie kann ich neue register karte button oder bild in form hinzufügen??
danke
lolwut?
Ich interpretiere es mal so:
Einem TabControl per Buttonclick TabPages hinzufügen und den Pages wiederum Pictureboxen.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
TabControl tab = new TabControl();
Controls.Add(tab);
Button btn = new Button();
btn.Text = "Register";
btn.Location = new Point(0, tab.Height);
Controls.Add(btn);
btn.Click += (o, e) =>
{
TabPage page = new TabPage();
page.Text = tab.TabPages.Count.ToString();
PictureBox pbox = new PictureBox();
pbox.Image = Image.FromFile(@"C:\xxx\ginagoeswild.jpg");
page.Controls.Add(pbox);
tab.TabPages.Add(page);
};
}
}
Ausbilder oder Chef?
Wenn Chef warum sagt der wie du etwas entwickeln sollst?
Wenn Ausbilder, warum hilft er dir nicht genauer?
Also mal konkret:
Du willst System variablen auslesen, sei es von der Maschine, Benutzer oder Programm.
Dafür stellt das .NET eine Klasse bereit, die "Environment".
Darin gibt es eine Statische Methode "GetEnvironmentVariables".
Je nachdem welche Art von Variablen man auslesen möchte, ruft man das "GetEnvironmentVariables" mit der entsprechenden Information auf.
Hier mal Beispiele:
Aufgabe:
Gib mir alle globalen Systemvariablen.
Lösung:
return Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Machine);
Aufgabe:
Gib mir alle Variablen des aktuellen Benutzers.
Lösung:
return Environment.GetEnvironmentVariables(EnvironmentVariableTarget.User);
Aufgabe:
Gib mir alle Variablen für den Aktuellen Prozess.
Lösung:
return Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Process);
Aufgabe:
Lies alle globalen System variablen aus und zeige dessen Name und Werte in der Console.
Lösung:
public void Do()
{
var variables = Environment.GetEnvironmentVariables(EnvironmentVariableTarget.Machine); // Liest alle variablen aus
foreach (DictionaryEntry variable in variables) // Durchläuft alle variablen
Console.WriteLine(string.Format("{0}: {1}", variable.Key, variable.Value)); // Zeigt an "Name: Wert"
}
Es könnte am Netzwerk liegen, aber ich hätte da noch eine andere Idee: der Editor von VS2010 nutzt WPF. Bei mir hat auf der Arbeit ein Treiber-Update der Grafikkarte enorm viel geholfen, da WPF bei älteren Treibern gerne mal auf Software-Rendering als "Fallback-Lösung" zurückgreift. Und dann beginnen die Performance-Probleme. Hängt natürlich davon ab wie alt Dein System ist, bei mir jedenfalls war der veraltete Treiber der Flaschenhals, vielleicht hilfts Dir ja.
Also ich denke Du musst eben das Event abfangen, sobald der Webbrowser die neue Seite vollständig geladen hat. So hab ich das jedenfalls mal gemacht und da funktionierte es.
Moin moin
Ich wollte mal fragen ob jemand von euch schon Erfahrungen mit dem Gadgeteer von Microsoft gesammelt hat.
Ich suche nach einer billigen und/oder guten Methode eine Funkverbindung zwischen einem Mastermodul und mehreren Slavemodulen herzustellen. Bei der Suche bin ich auf Gadgeteer gestossen, habe aber nicht genug Infos bezüglich den Anwendungsgebieten gefunden.
Wäre toll wenn ihr einfach mal ein paar Erfahrungsberichte beisteuern könntet, würde mir enorm helfen.
Wenn ichs am falschen Ort gepostet habe: sry, einfach verschieben
Edit:
Der Auftrag hat sich zwar soeben in Luft aufgelöst, aber weil das Gadgeteer dennoch interessant aussieht, führe ich es evt privat weiter.
Grüsse
Chiller
Beschäftige Dich mit den Grundlagen von C#/.NET.
Elementarer geht es wirklich nicht. Und "Befehle senden" heißt wohl dass Du Dich in einem Bereich versuchst, für den Dir das Basiswissen fehlt.
Hier findest Du jedenfalls die Lösung, erarbeite sie Dir bitte selbst:
http://msdn.microsoft.com/de-de/library/system.string.aspx
Hallo
Ja auf ItemsControl hat man mich schon mal hingewiesen. Ich finde da aber kein Beispiel dazu dass in meine Richtung geht. In welcher Eigenschaft gebe ich den die Anzahl an wiviel Items eingebunden werden sollen?