/// <summary>
/// Invoked when the control has been initialized.
/// </summary>
/// <param name="e">The event args.</param>
protected override void OnInitialized(EventArgs e)
{
base.OnInitialized(e);
if (CatelEnvironment.IsInDesignMode)
{
return;
}
var newContentAsFrameworkElement = Content as FrameworkElement;
if (_isWrapped || !WrapControlService.CanBeWrapped(newContentAsFrameworkElement))
{
return;
}
var languageService = ServiceLocator.Default.ResolveType <ILanguageService>();
if (IsOKButtonAvailable)
{
var button = DataWindowButton.FromAsync(languageService.GetString("OK"), OnOkExecuteAsync, OnOkCanExecute);
button.IsDefault = DefaultButton == DataWindowDefaultButton.OK;
_buttons.Add(button);
}
if (IsCancelButtonAvailable)
{
var button = DataWindowButton.FromAsync(languageService.GetString("Cancel"), OnCancelExecuteAsync, OnCancelCanExecute);
button.IsCancel = true;
_buttons.Add(button);
}
if (IsApplyButtonAvailable)
{
var button = DataWindowButton.FromAsync(languageService.GetString("Apply"), OnApplyExecuteAsync, OnApplyCanExecute);
button.IsDefault = DefaultButton == DataWindowDefaultButton.Apply;
_buttons.Add(button);
}
if (IsCloseButtonAvailable)
{
var button = DataWindowButton.FromSync(languageService.GetString("Close"), OnCloseExecute, OnCloseCanExecute);
button.IsDefault = DefaultButton == DataWindowDefaultButton.Close;
_buttons.Add(button);
}
foreach (var button in _buttons)
{
_commands.Add(button.Command);
}
var wrapOptions = WrapControlServiceWrapOptions.GenerateWarningAndErrorValidatorForDataContext | WrapControlServiceWrapOptions.GenerateAdornerDecorator | WrapControlServiceWrapOptions.ExplicitlyAddApplicationResourcesDictionary;
switch (_infoBarMessageControlGenerationMode)
{
case InfoBarMessageControlGenerationMode.None:
break;
case InfoBarMessageControlGenerationMode.Inline:
wrapOptions |= WrapControlServiceWrapOptions.GenerateInlineInfoBarMessageControl;
break;
case InfoBarMessageControlGenerationMode.Overlay:
wrapOptions |= WrapControlServiceWrapOptions.GenerateOverlayInfoBarMessageControl;
break;
}
_isWrapped = true;
var contentGrid = WrapControlService.Wrap(newContentAsFrameworkElement, wrapOptions, _buttons.ToArray(), this);
var internalGrid = contentGrid.FindVisualDescendant(obj => (obj is FrameworkElement) && string.Equals(((FrameworkElement)obj).Name, WrapControlServiceControlNames.InternalGridName)) as Grid;
if (internalGrid != null)
{
internalGrid.SetResourceReference(StyleProperty, "WindowGridStyle");
if (_focusFirstControl)
{
newContentAsFrameworkElement.FocusFirstControl();
}
_defaultOkCommand = (from button in _buttons
where button.IsDefault
select button.Command).FirstOrDefault();
_defaultOkElement = WrapControlService.GetWrappedElement <ButtonBase>(contentGrid, WrapControlServiceControlNames.DefaultOkButtonName);
_defaultCancelCommand = (from button in _buttons
where button.IsCancel
select button.Command).FirstOrDefault();
InternalGrid = internalGrid;
OnInternalGridChanged();
}
}