2009-09-16 113 views
0

結合我已經得到了有NotesViewModelWPF - MVVM命令的子視圖模型

public IManageVehicleNotesViewModel NotesViewModel { get; set; } 

子視圖模型在VehicleViewModel第一次激活我激活子視圖模型一個VehicleViewModel。

NotesViewModel.Activate(); 

該激活調用一個方法來初始化一些命令,我​​已經指出這個和它被調用。

CreateCommand = new DelegateCommand<object>(OnCreateCommand, CanCreate); 

然而,儘管文本框是在副視點(這樣的DataContext到位)沒有命令是綁定綁定 - 我試着呼喚RaiseCanExecuteChanged上的命令,但他們沒有禁用,啓用或按預期調用方法。

我不知道它是否有關(如文本框被結合),但我的關聯查看和使用視圖模型ResourceDictionary中的那麼...在頂層VehicleViewModel

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:v="clr-namespace:GTS.GRS.N3.Modules.Vehicles.Views" 
    xmlns:vm="clr-namespace:GTS.GRS.N3.Modules.Vehicles.Model"> 
    <DataTemplate DataType="{x:Type vm:ManageVehicleViewModel}"> 
    <v:ManageVehicleView /> 
    </DataTemplate> 
    <DataTemplate DataType="{x:Type vm:ManageVehicleNotesViewModel}"> 
    <v:ManageVehicleNotesView /> 
    </DataTemplate> 
</ResourceDictionary> 

的命令工作。

有沒有人遇到類似這樣的事情?這是我做事的順序嗎?任何幫助感激地收到!

乾杯,

安迪

回答

2

是否CreateCommand屬性觸發事件PropertyChanged?如果沒有,用戶界面不會當你將它通知...

嘗試使用工具,如Snoop檢查按鈕的Command屬性是否設置

+0

尼斯一個感謝,以前我從來沒有必須在命令上有一個PropertyChanged,但我剛剛refactered我的模塊。我想到了RaiseCanExecuteChanged是PropertyChanged for Commands的替代品,謝謝指針! – 2009-09-16 15:41:03

+0

如果命令定義前先查看被綁定到視圖模型,你不需要提高的PropertyChanged。無論如何,我的命令屬性通常是隻讀的,而且是初始化的,所以我不需要擔心它 – 2009-09-16 16:05:46

0

做到這一點,檢查輸出,看看是怎麼回事:

<UserControl … 
    xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase" /> 

<Button Command="{Binding MyCommand, 
        diagnostics:PresentationTraceSources.TraceLevel=High}" … /> 

應該報什麼對象,但它實際上是試圖綁定到,等檢查您在運行時的輸出窗口,以查看該綁定發生了什麼。