我試圖用DevExpress DXWindow實現Catel的custom window,但是有一個問題,DXWindow沒有完全支持這個接口。我想知道另一個可以實施更改通知嗎? P.S.對不起,我的英語不好。DevExpress DXWindow和Catel Castom窗口
public class DXWindowEx : DXWindow, IDataWindow
{
private readonly WindowLogic logic;
public DXWindowEx()
: this(null)
{
}
public DXWindowEx(IViewModel viewModel)
{
Type viewModelType = null;
if (viewModel != null)
{
viewModelType = viewModel.GetType();
}
if (viewModelType == null)
{
var viewModelLocator = ServiceLocator.Default.ResolveType<IViewModelLocator>();
viewModelType = viewModelLocator.ResolveViewModel(GetType());
if (viewModelType == null)
{
const string error =
"The view model of the view could not be resolved. Use either the GetViewModelType() method or IViewModelLocator";
throw new NotSupportedException(error);
}
}
logic = new WindowLogic(this, viewModelType, viewModel);
logic.ViewModelChanged += (sender, e) => ViewModelChanged.SafeInvoke(this, e);
logic.ViewModelPropertyChanged += (sender, e) => ViewModelPropertyChanged.SafeInvoke(this, e);
//This code did'n work
//logic.PropertyChanged += (sender, e) => PropertyChanged(sender, e);
//PropertyChanged
// Because the RadWindow does not close when DialogResult is set, the following code is required
ViewModelChanged += (sender, e) => OnViewModelChanged();
// Call manually the first time (for injected view models)
OnViewModelChanged();
WindowStartupLocation = WindowStartupLocation.CenterScreen;
SetBinding(TitleProperty, new Binding("Title"));
}
public IViewModel ViewModel
{
get { return logic.ViewModel; }
}
public event EventHandler<EventArgs> ViewModelChanged;
public event EventHandler<PropertyChangedEventArgs> ViewModelPropertyChanged;
private void OnViewModelChanged()
{
if (ViewModel != null && !ViewModel.IsClosed)
{
ViewModel.Closed += ViewModelClosed;
}
}
private void ViewModelClosed(object sender, ViewModelClosedEventArgs e)
{
Close();
}
}
缺什麼?你能給我發送編譯錯誤嗎? –