Переместить всплывающее окно после привязки данных - PullRequest
0 голосов
/ 24 февраля 2012

Я хотел бы отобразить всплывающее окно над моим элементом управления, когда пользователь «наведет курсор», проблема в том, что содержимое всплывающего окна представляет собой ListBox, который связывает данные, поэтому я не знаю размер элемента управления (для установки полей)Я пробовал все события, перечисленные в intellisense во всплывающем окне, но ActualHeight во всплывающем окне равен нулю (хотите вычесть из Margin.Top), есть идеи?

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Для этого я бы рекомендовал использовать всплывающую подсказку.Таким образом, вы можете отформатировать всплывающую подсказку для отображения со списком, привязанным к данным.Например: обычная подсказка будет выглядеть следующим образом:

<sdk:Label Content="{Binding SomeBinding}" Width="Auto" Height="Auto" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
                            <ToolTipService.ToolTip>
                                <ToolTip Content="Some tool tip." Name="ttSomeToolTip"></ToolTip>
                            </ToolTipService.ToolTip>
                        </sdk:Label>

Я предполагаю, что вы делаете следующее:

<sdk:Label Content="{Binding SomeToolTip}" Width="Auto" Height="Auto" VerticalAlignment="Stretch" HorizontalAlignment="Stretch">
                            <ToolTipService.ToolTip>
                                <ToolTip  Name="ttSomeToolTip">
                                    <ListBox ItemsSource="{Binding MyListBoxSource}" SelectedItem="{Binding MySelectedListBoxItem,Mode=TwoWay}">                                            
                                    </ListBox>
                                </ToolTip>
                            </ToolTipService.ToolTip>
                        </sdk:Label>

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

0 голосов
/ 24 февраля 2012

Вы должны запустить код через Dispatcher, тогда ваш код выполняется в потоке пользовательского интерфейса, и у вас есть доступ к контрольному размеру.Смотри здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...