我一直在使用MVVM模型一週左右,現在我想我應該處理什麼應該去哪裏。注意那裏的「思考」。控制數據綁定在MVVM場景中查看而不是ViewModel
我有我的觀點(主窗口)結合
_ViewModel = new MainViewModel();
this.DataContext = _ViewModel;
我有幾個個ICommand那些視圖模型中工作,隨後的模型,該模型我很好用單視圖模型。
現在,我開始從我的視圖(主窗口),我在代碼隱藏做了幾個窗口,因爲這一切都純粹是查看相關的東西。我試圖複製View中的ViewModel中的ICommand設置來簡化我的生活,所以我想。我有以下命令設置:
public ICommand comInitialiseWindows { get; private set; }
private bool _windowsactive = false;
public bool WindowsActive
{
get { return _windowsactive; }
set { SetProperty(ref _windowsactive, value); }
}
public bool comInitialiseWindows_CAN()
{
return !_windowsactive;
}
private void comInitialiseWindows_DO()
{
... Code to do the window creation, etc.
}
我在主窗口代碼此繼電器命令:
comInitialiseWindows = new RelayCommand(() => comInitialiseWindows_DO(), comInitialiseWindows_CAN);
如果我把這個視圖模型它的工作原理治療除了窗口創建的東西,但因爲它的視圖相關我並不感到驚訝。
所以問題是當我點擊按鈕時代碼不運行。我猜XAML綁定到ViewModel,但我無法找到解決這個問題的方法,無需在代碼隱藏中將每個按鈕的綁定設置爲MainWindow。我曾以爲,以下會的工作,但它並不:
<Button x:Name="ribbutLayoutWindows"
Command="{Binding local:comInitialiseWindows}"
IsEnabled="{Binding local:comInitialiseWindows_CAN}"/>
我敢肯定,我只是沒有得到的東西的地方。或者我試圖在正常按鈕點擊已經足夠的情況下進行過分複雜的處理,因爲它只是查看。
有什麼建議嗎?
爲什麼「啓動幾個窗口」純看法有關係嗎?您的視圖模型包含視圖邏輯,視圖只是爲用戶可視化視圖模型。我使用從視圖模型調用的服務來啓動新的對話框或窗口。順便說一句,你應該檢查你是否需要新窗口,或者只是爲了切換主視圖的用戶控件。 – blindmeis 2013-05-02 05:04:30