Как установить абсолютное положение диалогового окна в WPF MVVM

Итак, все мои элементы управления хорошо разложены с использованием сеток и стековых панелей.

В некоторых случаях я хотел бы показать диалоговый слой (чтобы добавить настройки и т. Д.). Он не должен быть модальным и не должен иметь прозрачного фона. Мне просто нужно, чтобы он был красивым, ненавязчивым и абсолютно позиционированным.

единственный способ, которым я могу придумать, чтобы позиционировать такое диалоговое управление абсолютно, - это использовать холст, который я не использую. Мне нужно, чтобы это отображалось поверх регулярно выложенных элементов управления..

Какие есть варианты?

3 ответа

Решение

Вы можете использовать всплывающий элемент управления (установите значение PlacementRectangle для позиционирования содержимого) или слой Adorner, чтобы сделать это. Техника украшения описана здесь: http://bignickolson.com/2009/10/15/overlaying-controls-in-wpf-with-adorners/

Я считаю, что это то, что вы ищете.... Вы можете поместить свой элемент управления в своем рекламодателе, а затем, изменив свойство bool, вы можете показать или скрыть его... вы можете настроить поведение в соответствии со своими предпочтениями.

Я думаю, что вы ищете, чтобы установить Panel.ZIndex на высокое значение для вашего диалога. Затем просто установите видимость, чтобы скрыть диалог. http://msdn.microsoft.com/en-us/library/system.windows.controls.panel.zindex.aspx

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <TextBlock Panel.ZIndex="9999"  Background="Green">This TextBlock will always be on top as long as it is visible.</TextBlock>
        <TextBlock Background="Red">Test</TextBlock>
    </Grid>
</Window>

Затем вы можете объединить это с диалоговым окном в этом примере: WPF C# InputBox

Другие вопросы по тегам