Как установить абсолютное положение диалогового окна в 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