У меня есть сервис, который отображает окна для меня.В основном, я получаю ViewModel, нахожу адекватный View (основанный на соглашении об именах).Установите владельца для окна и отобразите его.
Это часть, которая действительно отлично работает.
В xaml окна, которое я отображаю, я сейчас добавляю привязку кViewModel для ширины и высоты (в данном случае это представление используется для размещения очень разных мастеров, поэтому мне нужно иметь возможность предоставлять разные параметры.
Окно имеет правильный размер, НО, это не такбольше не центрирован на владельце. С жестко закодированными шириной / высотой все хорошо центрировано.
I угадайте привязка выполняется ПОСЛЕ того, как отображается окно (??), а затем изменяется размер, имеющий правильный размер, но не по центру?
Возможно ли поведение, которое я ожидаю?
Какой-то код:
Мой сервис: public bool? ShowCustomDialog (ICustomDialogViewModelviewModel) {bool? dialogResult = null;
void ShowAction()
{
Type viewType = _viewService.GetViewType(viewModel.GetType());
Window dialog = (Window)Activator.CreateInstance(viewType);
dialog.Owner = FindOwner();
dialog.DataContext = viewModel;
PropertyChangedEventHandler handler = RegisterDialogResult(dialog, viewModel);
dialogResult = dialog.ShowDialog();
UnregisterDialogResult(viewModel, handler);
}
System.Windows.Application.Current.Dispatcher.InvokeIfRequired(ShowAction);
return dialogResult;
}
И Xaml:
<dx:ThemedWindow x:Class="My.View"
<!--...-->
Width="{Binding WindowWidth, Mode=OneTime}"
MinWidth="{Binding WindowWidth, Mode=OneTime}"
Height="{Binding WindowHeight, Mode=OneTime}"
MinHeight="{Binding WindowHeight, Mode=OneTime}"
WindowStartupLocation="CenterOwner"
WindowStyle="SingleBorderWindow"
ResizeMode="NoResize"
ShowInTaskbar="False" >
<!--...-->
</dx:ThemedWindow>