Пользовательский диалог WPF Prism не по центру - PullRequest
0 голосов
/ 07 ноября 2018

Я создал запрос диалога стоимости в wpf с платформой призмы. Все работает отлично, за исключением того, что всплывающее диалоговое окно не центрируется над главным окном (связанным окном). Я последовал примеру призмы 28-CustomRequest с сайта Примеры призмы из GitHub .

Я пробовал с CenterOverAssociatedObject="True" и WindowStartupLocation="CenterScreen", но ничего не получалось.

Также странно, когда я запускаю приложение и поднимаю пользовательский диалог и проверьте свойства диалогов wpf в проводнике live-properties, который он показывает мне в Lokal> Top значение Top = -19 ??

Вот мое главное окно:

<controls:MetroWindow x:Class="Views.ShellView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls"
    xmlns:regions="http://www.codeplex.com/prism"
    xmlns:prism="http://prismlibrary.com/"
    xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls"
    xmlns:views="clr-namespace:MainApp.Views"
    prism:ViewModelLocator.AutoWireViewModel="True"
    mc:Ignorable="d"
    BorderBrush="{DynamicResource AccentBaseColorBrush}"
    ResizeMode="CanResizeWithGrip" SizeToContent="WidthAndHeight"
    MinWidth="1280" MinHeight="768" 
    WindowStartupLocation="CenterScreen"
    Height="Auto" Width="Auto">

    <i:Interaction.Triggers>
    <prism:InteractionRequestTrigger SourceObject="{Binding CustomDialogRequest}">
        <prism:PopupWindowAction IsModal="True" CenterOverAssociatedObject="True" >  '<---My tries
            <prism:PopupWindowAction.WindowStyle>
                <Style TargetType="Window">
                    <Setter Property="Icon" Value="/MainApp;component/Images/img.ico"/>
                    <Setter Property="Height" Value="400"/>
                    <Setter Property="Width" Value="400"/>
                </Style>
            </prism:PopupWindowAction.WindowStyle>
            <prism:PopupWindowAction.WindowContent>
                <views:MyCustomView />
            </prism:PopupWindowAction.WindowContent>
        </prism:PopupWindowAction>
    </prism:InteractionRequestTrigger>
    </i:Interaction.Triggers>

    <Grid>

    'Button which triggers the custom pop up

    </Grid>
</controls:MetroWindow>

MyCustomView:

<UserControl x:Class="Views.MyCustomView"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  xmlns:local="clr-namespace:MainApp"
  mc:Ignorable="d" 
  d:DesignHeight="300" d:DesignWidth="300"
  xmlns:prism="http://prismlibrary.com/"             
  prism:ViewModelLocator.AutoWireViewModel="True">

  <Grid>

    <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
        <TextBox Text="Text"/>
    </StackPanel>

   </Grid>
</UserControl>

Этот Sub запускает пользовательский диалог:

Public ReadOnly Property RaiseCustomDialog As DelegateCommand = New DelegateCommand(AddressOf Me.CustomDialog)

Private Sub CustomDialog()

        Dim testdialog As New CustomDialog.CustomDialog() With {.Title = UIResources.Commission & ":"}

        CustomDialogRequest.Raise(testdialog,
                                  Sub(response)
                                      ID = DirectCast(response, CustomDialog.CustomDialog).SelectedItem
                                      If DirectCast(response, CustomDialog.CustomDialog).Confirmed AndAlso Not String.IsNullOrEmpty(ID) Then
                                          StuffToDo(ID)
                                      Else
                                          Msgbox("Test")
                                      End If
                                  End Sub
                                  )
End Sub    
...