Я пытаюсь использовать существующую диалоговую анимацию (линейный перевод / перемещение точек слева направо; я полагаю, что она используется в некоторых windows 10 диалоговых окнах, таких как подключение к Wi-Fi) из MahApps.Metro
framework ShowProgressAsync()
, без влияет на мой существующий код, что означает, что я не хочу использовать Metrowindow
вместо window
класса, к сожалению, он реализован внутри DLL. Есть ли способ использовать его в моем коде?
Я знаю, что можно реализовать его с нуля как анимацию, используя Storyboard
, но потребуется время, чтобы достичь чего-то достаточно хорошего. Я попробовал несколько подходов, таких как приведение window
к Metrowindow
классу, и следовал MahApps.Metro: руководство по диалогам , но я сталкивался с ошибками компиляции, в большинстве случаев это:
> System.InvalidOperationException: Context is not registered. Consider
> using DialogParticipation.Register in XAML to bind in the DataContext.
Вот MWE:
TestWindow.xaml:
<Window x:Class="Wpf.Views.TestWindow" x:Name="win"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Wpf.Views"
mc:Ignorable="d"
Title="TestWindow" Height="450" Width="800">
<Grid>
<local:MyDialog/>
</Grid>
</Window>
MyDialog.xaml
<UserControl x:Class="MyWpf.Views.MyDialog" x:Name="self"
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:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
mc:Ignorable="d"
HorizontalAlignment="Center"
VerticalAlignment="Center"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<UserControl x:Class="Wpf.Views.MyDialog" x:Name="self"
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:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
MinWidth="300" MinHeight="300" mc:Ignorable="d">
<Grid>
<materialDesign:DialogHost Identifier="1" BorderBrush="{DynamicResource MaterialDesignDivider}" Height="130"
Width="{Binding ActualWidth, ElementName=self}" HorizontalAlignment="Center">
<Button Command="{x:Static materialDesign:DialogHost.OpenDialogCommand}" Width="130">
Open
</Button>
<materialDesign:DialogHost.DialogContent>
<StackPanel Orientation="Vertical" Height="130" Width="{Binding ActualWidth, ElementName=self}">
<TextBlock Text="Work in Progress" HorizontalAlignment="Center"/>
<Button Style="{StaticResource MaterialDesignFlatButton}"
IsCancel="True" Command="{x:Static materialDesign:DialogHost.CloseDialogCommand}" HorizontalAlignment="Center">
CANCEL
</Button>
</StackPanel>
</materialDesign:DialogHost.DialogContent>
</materialDesign:DialogHost>
</Grid>
</UserControl>