2009-06-29 48 views
1

我是XAML新手,所以請注意我的問題可能包含一些主題misundrestanding。XAML - 獲取用戶控件相對於整個窗口的位置作爲綁定屬性

是否可以綁定XAML usercontrol global(相對於窗口)位置來檢查它是否當前在屏幕上可見?用戶控件裏面插入的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> 

回答

2

不,這是不可能得到在XAML中你控制的「位置」(不直接像我們習慣了,至少)。在WPF中,控件不再具有「位置」屬性。控件和屏幕元素只有寬度和高度屬性,這不會幫助您找到它們在窗口中的位置。

但是:如果你真的需要知道的東西是,使用父控件的屬性,你 CAN看着辦吧。 (微軟已經如此,這是做到這一點的唯一可靠的方法了。)

例子:
如果你有兩行的網格,你的用戶控件是在第二行 - 你可以將第一行的ActualHeight屬性視爲您的UserControl的「Location.Y」屬性,而不是查看控件本身以向您提供其位置。

這是你必須習慣的東西,因爲沒有辦法繞過它。

考慮在設計中的某處使用<Grid>元素。它以非常直接的方式提供有關控件位置的信息。它像一個動態調整大小的HTML表格的更智能的版本。您可以檢索任何行或列的ActualWidth和ActualHeight屬性 - 如果需要,甚至可以檢索整個網格本身。

相關問題