XAML - получить позицию пользовательского элемента управления относительно всего окна как свойство привязки - PullRequest
1 голос
/ 30 июня 2009

Я новичок в XAML, поэтому имейте в виду, что мой вопрос может содержать некоторое недоразумение.

Можно ли привязать глобальную (относительно окна) позицию XAML usercontrol, чтобы проверить, видна ли она в данный момент на экране? Usercontrol вставляется внутри ScrollViewer, и я думаю о чем-то вроде:

  <UserControl x:Class="Test.MessageControl"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Width="300">
      <StackPanel >
          <Label Name="LabelTest" 
          Content="{Binding RelativeSource={RelativeSource Self}, 
          Path=MAGIC-GOES-HERE-Location.Y }" />
      </StackPanel>
   </UserControl>

1 Ответ

2 голосов
/ 30 июня 2009

Нет, невозможно получить «местоположение» ваших элементов управления в XAML (по крайней мере, не так, как мы привыкли). В WPF элементы управления больше не имеют свойств «location». Элементы управления и элементы экрана имеют только свойства ширины и высоты, которые не помогут вам найти их расположение в окне.

НО: Если вам действительно нужно знать, где что-то находится, вы МОЖЕТЕ выяснить это, используя свойства родительского элемента управления , (Microsoft сделала так, что это единственный надежный способ сделать это больше.)

Пример:
Если у вас есть сетка из двух строк, а ваш UserControl находится во второй строке - вы можете рассматривать свойство ActualHeight первой строки так, как будто оно является свойством «Location.Y» вашего UserControl, вместо того, чтобы смотреть на сам элемент управления, чтобы предоставить вам его местоположение.

Это то, к чему вам придется привыкнуть, поскольку больше нет способа обойти это.

Подумайте об использовании элемента <Grid> где-нибудь в вашем дизайне. Он предоставляет информацию о расположении ваших элементов управления очень простым способом. Он работает как более умная версия динамически изменяемой таблицы HTML. Вы можете получить свойства ActualWidth и ActualHeight для любой строки или столбца или даже для всей сетки, если хотите.

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