0

DevExpress DXWindow を使用して Catel のカスタム ウィンドウを実装しようとしていますが、問題があります。DXWindow はこのインターフェイスを完全にサポートしていません。別の変更通知を実装できるように知りたいですか? PS 下手な英語で申し訳ありません。

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();
    }
}
4

1 に答える 1