Я использую Prism 5. Для отображения диалога я использую InteractionRequest. Свойство IsModel имеет значение False, поэтому, когда я щелкаю по главному окну (откуда поднимаются диалоги), диалоги переходят в фоновый режим. Теперь я пытаюсь реализовать следующее: когда я снова нажму кнопку, снова появится диалоговое окно.
Вот мой пользовательский класс PopupWindowActionclass:
public class CustomDialogWindow : PopupWindowAction
{
private Window window;
protected override Window GetWindow(INotification notification) {
window = base.GetWindow(notification);
return window;
}
public static readonly DependencyProperty SetFocusProperty =
DependencyProperty.Register("SetFocus", typeof(bool),
typeof(CustomDialogWindow), null);
public bool SetFocus {
get { return (bool)GetValue(SetFocusProperty); }
set {
if (value) {
if (window != null) {
window.Activate();
window.Focus();
}
}
SetValue(SetFocusProperty, value);
}
}
}
Вот моя конфигурация на стороне XMAL:
<prism:InteractionRequestTrigger SourceObject="{Binding ContainerMoveSummaryRequest, Mode=OneWay}">
<popout:CustomDialogWindow x:Name="ContentSummaryGridAction"
IsModal="False" SetFocus="{Binding SetFocusOnContainerMoveSummary,Mode=TwoWay}">
<popout:CustomDialogWindow.WindowContent>
<dialogs:ContainerMoveSummaryDialog />
</popout:CustomDialogWindow.WindowContent>
</popout:CustomDialogWindow>
</prism:InteractionRequestTrigger>
Проблема в том, что привязка выполняется в двух направлениях: при изменении SetFocusOnContainerMoveSummary
, SetFocus
не получает изменений.
Пожалуйста, дайте мне знать любое решение для этого.