Wie bind-Variablen Anzeigen zu ViewModel in WPF, MVVM?
Ich habe ein Fenster erstellt ( WPF und MVVM ) - sagen PrintWidow ( so habe ich PrintWindow.xaml , PrintWindow.xaml.cs , PrintWindowViewModel.cs - viewmodel)
Nun bin ich dabei zu verwenden(call) dieser PrintWindow
obj aus einer anderen Klasse auf die Schaltfläche klicken oder auf einen Befehl auslösen , ich möchte set Dokument-Quelle für diese PrintWindow(nach MVVM).
Wie kann ich dies tun ? Ich erstellte eine PrintDocument
Objekt in PrintWindow.xaml.cs und versuchte, es zu binden, wie folgt : (natürlich nur eine leere versuchen - wie ich dies nicht tun Deklaration in XAML)
private PrintDocument printDocuementView;
public PrintDocument PrintDocuement
{
get { return printDocuementView; }
set { printDocuementView = value; }
}
//constructor
public PrintWindow()
{
InitializeComponent();
this.DataContext = new PrintViewModel();
Binding b = new Binding();
b.Source = printDocuementView;
b.Path = new PropertyPath("PrintDocumentCommand"); //"PrintDocumentCommand" is defined in View Model class and is responsible to set the `PrintDocument` object there.
}
Dieser code (offensichtlich) nicht funktioniert. Wie sollte ich es angehen.
Zusammenfassung : ich möchte zu öffnen PrintWindow
aus einem anderen Fenster und schließlich setzen einige Eigenschaft der PrintWindow
von code hinter der 'anderen Witwe' - Objekt.Die Abfrage ist - wo soll dieser Eigenschaft gehen? Anzeigen ? ViewModel? ?? puzzzeled
Ich habe gegoogelt für die Antworten, konnte aber keinen Bezug zu meinem problem.
Ich bin ein Neuling für WPF
und ein Rookie für MVVM
.
- Was wollen Sie erreichen? Wollen Sie zum öffnen der PrintWindow aus einem anderen Fenster? Oder wollen Sie eine Schaltfläche hinzu, die die PrintWindow aktivieren einige Funktionen?
- Haben Sie einen Blick auf dieses MVVM Tutorial
- Ich will öffnen, Drucken-Fenster von einem anderen Fenster . und schließlich legen Sie die Quell-Dokument aus dem code-behind-oder der 'andere Witwe'.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Seit Ihr
PrintDocumentCommand
ist in IhremPrintViewModel
aber du bist die Quelle von dieser Bindung an eine Instanz derPrintDocument
-Klasse, kann es nicht gefunden werden, da die Bindung ist auf der Suche nach derPrintDocumentCommand
imPrintDocument
-Klasse.Wenn Sie möchten, öffnen Sie die PrintWindow aus einem anderen Fenster, legen Sie die
PrintDocument
-Eigenschaft und diePrintDocumentCommand
im ViewModel von der anderen Fenster. Jetzt ist Ihre Funktion, die ausgeführt wird, durch diePrintDocumentCommand
Aussehen könnte:Konstruktor Ihrer PrintView könnte so sein:
und Sie haben nun Zugriff auf die PrintDocument-in Ihrem PrintViewModel.
PrintDocumentCommand
zu , wenn ich entfernen Sie dieb.source
. Den Rest mache ich schon .