我有MainWindow和DataDetails用戶控件。 DataDetails顯示內部主窗口在窗口的右側,使用XAMLMainWindow和UserControl,用戶控件上的事件處理
<Views:DataDetails />
主窗口被渲染和DataDetails都使用的ViewModels,我要離開代碼隱藏完好。所以我使用命令進行事件處理,但是我遇到了這種方法的問題。點擊主窗口事件是否工作正常,在DataDetails同樣的方法不能正常工作,這裏的代碼
MainWindow.xaml
...
<Button Name="btnSearch"
Command="{Binding SearchByCommand, Mode=OneWay}"> Search </Button>
MainWindowViewModel.cs
public ICommand SearchByCommand
{
get
{
if (_SearchByCommand == null)
{
_SearchByCommand = new RelayCommand(
x => this.LoadData(this.SearchBy),
x => { return !string.IsNullOrEmpty(this.SearchText); }
);
}
return _SearchByCommand;
}
}
LoadData方法不這裏顯示的是爲了減少代碼量,再次運行inisde MainWindow。
Inside MainWindow.xaml我已經添加了DataDetails用戶控件<Views:DataDetails />
,在窗口標籤元素裏面添加了這個名稱空間,所以這個用戶控件在MainWindow中正確顯示。在DataDetails中,我有按鈕單擊事件連接到命令SaveDataCommand並在DataDetailsViewModel內命令自己。
DataDetails.xaml
<Button Name="btnSave"
Command="{Binding SaveDataCommand, Mode=OneWay}"> Save data</Button>
DataDetailsViewModel
public ICommand SaveDataCommand
{
get
{
_SaveDataCommand = new RelayCommand(
x=>this.SaveData(), null);
return _SaveDataCommand;
}
}
再次這裏未示出此方法(保存數據),以減少的代碼量。在調試此SaveDataCommand從不被擊中,在按鈕上單擊沒有任何事情發生。我在這裏錯過了什麼?
你在哪裏設置DataDetails DataContext爲DataDetailsViewModel? DataDetailsViewModel是MainWindowViewModel的一個屬性嗎? – Fayilt