Я создал запрос диалога стоимости в 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