Ты не слишком много смотришь здесь.Я не уверен, как вы спроектировали свое приложение, но для себя я создал класс NavPage
, который расширяет класс UserControl
и имеет свойство Modal
типа NavPage
и Close
event.
Таким образом, мой элемент управления NavPage
позволяет мне размещать другие элементы управления NavPag
как модальные внутри него.Функция Close просто закрывает страницу.
Вот как выглядит мой шаблон для элемента управления NavPage
.
<ControlTemplate x:Key="Fx_NavPage_ControlTemplate" TargetType="{x:Type fx:NavPage}">
<Grid>
<Border x:Name="TheContainer" CornerRadius="{TemplateBinding CornerRadius}" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}">
<ContentControl Content="{TemplateBinding Content}" />
</Border>
<Border x:Name="TheCover" CornerRadius="{TemplateBinding CornerRadius}" Background="#20000000" Visibility="Collapsed" />
<ContentControl x:Name="TheModal" Content="{TemplateBinding Modal}" Visibility="Collapsed" />
</Grid>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding Modal, RelativeSource={x:Static RelativeSource.Self}, Converter={StaticResource IsNullConverter}}" Value="False">
<Setter TargetName="TheCover" Property="Visibility" Value="Visible" />
<Setter TargetName="TheModal" Property="Visibility" Value="Visible" />
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
Так что в основном у меня просто есть Grid
с ContentControl (TheContainer)
, Border (TheCover)
и другим ContentControl (TheModal)
,Затем у меня есть DataTrigger
, который проверяет, является ли значение свойства Modal
для NavPage
, и если оно не равно нулю, оно изменяет видимость TheCover и TheModal на видимое.Обложка - это просто полупрозрачный элемент управления Border, который не дает пользователю нажимать элементы управления в главном NavPage.
Надеюсь, это поможет вам, или вы можете просто использовать BusyIndicator, предложенный выше, я никогда не использовалон сам, поэтому не может дать вам никакой информации там.Если вы решили пойти по этому пути и вам нужна помощь, позвольте мне сейчас получить больше кода для вас.