У меня есть пример на github пользовательского FrameworkElement
, который позволяет отображать модальное содержимое поверх основного содержимого.
Элемент управления можно использовать так:
<c:ModalContentPresenter IsModal="{Binding DialogIsVisible}">
<TabControl Margin="5">
<Button Margin="55"
Padding="10"
Command="{Binding ShowModalContentCommand}">
This is the primary Content
</Button>
</TabItem>
</TabControl>
<c:ModalContentPresenter.ModalContent>
<Button Margin="75"
Padding="50"
Command="{Binding HideModalContentCommand}">
This is the modal content
</Button>
</c:ModalContentPresenter.ModalContent>
</c:ModalContentPresenter>
Особенности:
- Отображение произвольного содержимого.
- Не отключает основной контент во время отображения модального контента.
- Отключает доступ мыши и клавиатуры к основному содержимому, пока отображается модальное содержимое.
- Является модальным только для содержимого, которое оно охватывает, а не для всего приложения.
- может использоваться в дружественном для MVVM виде путем привязки к свойству
IsModal
.