如題:
我采用MVVM模式,但是在viewmodel呼叫不到view的控制元件,想知道怎么才能打開一個新的表單
uj5u.com熱心網友回復:
你這話真的有點讓人理解,MVVM獲取在VM中獲取V中控制元件和初始化一個視窗有什么必然的關系么,還是說前臺點擊然后在VM中觸發然后初始化個表單?http://baike.baidu.com/link?url=zY07igzY1JLInXkn2Xp3nYfA3puyRM7YwGB6fM48oJuyzC5XIzbDR5tqQ0hlWyLH6jA4kXSuPN9E9RsT7fioOq
uj5u.com熱心網友回復:
實體化表單就new 然后show,不想要表單就放個contentcontrol,在里面放usercontrol之類的。uj5u.com熱心網友回復:
傳值的話就可以比如說前臺為aView.xaml VM為aViewModel.cs
xaml中寫Text="Binding Text"
aView.xaml.cs 中寫this.datacontext=new aViewModel();
aViewModel中寫
string text;
public string Text
{
get{return this.text;}
set{SetProperty<string>(ref this.text,value);}
}
然后只需要在vm中給Text賦值就行了
uj5u.com熱心網友回復:
可是我在 viewmodel中獲取不到view的物件!
uj5u.com熱心網友回復:
為什么要獲取?事件可以通過觸發器系結到后臺的委托上,委托中可以得到觸發委托的object物件,如果是一些datasource之類的你也可以直接通過binding這種方式讓xaml呈現出來。。。
uj5u.com熱心網友回復:
傳值的話就可以
比如說前臺為aView.xaml VM為aViewModel.cs
xaml中寫Text="Binding Text"
aView.xaml.cs 中寫this.datacontext=new aViewModel();
aViewModel中寫
string text;
public string Text
{
get{return this.text;}
set{SetProperty<string>(ref this.text,value);}
}
然后只需要在vm中給Text賦值就行了
可是我在 viewmodel中獲取不到view的物件!
為什么要獲取?事件可以通過觸發器系結到后臺的委托上,委托中可以得到觸發委托的object物件,如果是一些datasource之類的你也可以直接通過binding這種方式讓xaml呈現出來。。。
舉個例子:Login.xaml 是一個登錄表單,如果登錄成功,那么要打開一個新的表單(Main.xaml),這個時候,我覺得應該在viewmodel中打開,
uj5u.com熱心網友回復:
傳值的話就可以
比如說前臺為aView.xaml VM為aViewModel.cs
xaml中寫Text="Binding Text"
aView.xaml.cs 中寫this.datacontext=new aViewModel();
aViewModel中寫
string text;
public string Text
{
get{return this.text;}
set{SetProperty<string>(ref this.text,value);}
}
然后只需要在vm中給Text賦值就行了[/
您能留下個QQ或者什么嗎uj5u.com熱心網友回復:
傳值的話就可以
比如說前臺為aView.xaml VM為aViewModel.cs
xaml中寫Text="Binding Text"
aView.xaml.cs 中寫this.datacontext=new aViewModel();
aViewModel中寫
string text;
public string Text
{
get{return this.text;}
set{SetProperty<string>(ref this.text,value);}
}
然后只需要在vm中給Text賦值就行了
可是我在 viewmodel中獲取不到view的物件!
為什么要獲取?事件可以通過觸發器系結到后臺的委托上,委托中可以得到觸發委托的object物件,如果是一些datasource之類的你也可以直接通過binding這種方式讓xaml呈現出來。。。
舉個例子:Login.xaml 是一個登錄表單,如果登錄成功,那么要打開一個新的表單(Main.xaml),這個時候,我覺得應該在viewmodel中打開,
正如你所說,Login中就可以把賬號密碼系結到后臺的兩個構造器上,然后登錄按鈕的Click事件可以通過觸發器系結到VM的委托上,只要一點擊,就可以通過服務進行驗證,如果認真通過,就要委托的Hander里面執行下一步操作(Main main=new Main(),main.show();)沒有什么問題啊uj5u.com熱心網友回復:
什么叫 在viewmodel呼叫不到view的控制元件 ???
既然都用了MVVM了,那么loginview總有對應的loginviewmodel吧。
loginview有一個login的button,那么loginviewmodel總有對應的login方法吧?
在login發放中判斷登錄成功了就new一個mainview顯示不就行了嗎。
uj5u.com熱心網友回復:
說那么多,真不如把代碼貼出來,一目了然uj5u.com熱心網友回復:
window w = new window(引數);
w.DataContext = 你的viewmodel;
w.show()轉載請註明出處,本文鏈接:https://www.uj5u.com/net/60546.html
標籤:C#
下一篇:net frameworks3.6.2更新以后,部分機器出現程式閃退+不能啟動,使用radmin遠程的時候,程式會崩潰,但再次遠程的時候程度會啟動
