c# - Using view method inside ViewModel (MVVM) -
let's using flowdocumentpageviewer , want use find method. how use while following rules of mvvm? i've done few searches , seems solutions mixed.
some suggest aggregate view viewmodel , use call method needed:
ex:
private mainwindow mw; public mainwindowviewmodel(mainwindow mw) { this.mw = mw; } public void find() { mw.flowdocument.find(); } but others suggest it's ok use these methods in view (code-behind) because viewmodel shouldn't calling view specific methods.
lastly i've heard of solving issue using attached behaviours haven't looked extensively see if method suitable or not.
i don't know method correct or if of these methods incorrect on how handle situation. if can give me insight on method preferred , why, grateful.
thanks in advance answers.
i solve problem mvvmlight messaging. (from viewmodel send message , on view's code behind register message.)
jesse liberty of microsoft has a great tutorial on how make use of messaging within mvvm light.
a class act message type:
public class flowdocumentfindmessage { public string pagename { get; private set; } // or other properties go here flowdocumentfindmessage(string pagename){ this.pagename = pagename } } the new find, sends message
public void find() { var msg = new flowdocumentfindmessage("page"); messenger.default.send<flowdocumentfindmessage>( msg ); } code behind, registers new message
messenger.default.register<gotopagemessage>( this, ( action ) => receivemessage( action )); private object receivemessage( flowdocumentfindmessage action ) { //do stuff }
Comments
Post a Comment