MainWindow 및 DataDetails 사용자 정의 컨트롤이 있습니다. DataDetails는 창의 오른쪽에 MainWindow를 내부에 표시되고 XAML을MainWindow 및 UserControl, 사용자 정의 컨트롤의 이벤트 처리
<Views:DataDetails />
MainWindow를을 사용하여 렌더링하고 DataDetails 모두 viewmodels를 사용하고 난 코드 숨김 그대로두고 싶다. 그래서 이벤트 처리를위한 명령을 사용하지만이 방법에 문제가 있습니다. MainWindow를에 이벤트가 제대로 작동 클릭 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 방법이 아닌 코드의 양을 줄이기 위해 여기에 표시된 것처럼 다시 MainWindow에서 작동합니다.
Inside MainWindow.xaml이 사용자 공간 컨트롤을 MainWindow 내부에 올바르게 표시 할 수 있도록이 네임 스페이스를 추가 한 window 태그 요소 안에 <Views:DataDetails />
이라는 DataDetails 사용자 컨트롤을 추가했습니다. 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;
}
}
다시이 방법 (위해 SaveData)는 코드의 양을 줄이기 위해 여기에 도시되어 있지 않다. 이 SaveDataCommand를 디버깅 할 때 절대로 버튼을 클릭하지 않으면 아무 일도 일어나지 않습니다. 여기서 내가 놓친 게 뭐야?
여기서 DataDetails DataContext를 DataDetailsViewModel로 설정합니까? DataDetailsViewModel이 MainWindowViewModel의 속성입니까? – Fayilt