Silverlight - вывести всплывающее окно на передний план - PullRequest
3 голосов
/ 10 ноября 2010

У меня есть 4 всплывающих окна, определенных следующим образом:

        <Popup x:Name="MyPopup1" IsOpen="True" Margin="0,10,0,0" Grid.Row="0" >
            <Popup.Child>
                <Thumb x:Name="thumb1" DragDelta="Thumb_DragDelta" Width="0" Height="0" Template="{StaticResource thumbDisplay}" />
            </Popup.Child>
        </Popup>
        <Popup x:Name="MyPopup2" IsOpen="True" Margin="0,20,0,0" Grid.Row="0" >
            <Popup.Child>
                <Thumb x:Name="thumb2" DragDelta="Thumb_DragDelta" Width="0" Height="0" Template="{StaticResource thumbDisplay}" />
            </Popup.Child>
        </Popup>

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

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

Я реализовал событие leftMouseDown (в шаблоне usercontrol Thumb) и попробовал обаиз следующего (второй, чтобы увидеть, будет ли работать НИЧЕГО)

        Canvas.SetZIndex(this, 9999);

        Canvas.SetZIndex(VisualTreeHelper.GetOpenPopups().ElementAt(1), 9999);

(я также попытался установить Z-Index на 0 - чтобы попытаться выдвинуть всплывающее окно вниз, просто, снова, чтобыпосмотрим, сработает ли что-нибудь) Ничего не помогло.

Я также попробовал то, что здесь, также безрезультатно, хотя я подозреваю, что это не относится ко мне, так как у меня нет ContentPResenter

Перенос элемента вперед (индекс Z) в Silverlight / WPF

1 Ответ

2 голосов
/ 10 ноября 2010

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

    private void FlashPopup(Popup popup) {
        popup.IsOpen = false;
        popup.IsOpen = true;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...