Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Popup denetimi, içeriği bir uygulamanın üzerinde kayan ayrı bir pencerede görüntüler. Popup, PlacementTarget, Placement, PlacementRectangleve HorizontalOffset özelliklerini kullanarak bir VerticalOffset denetime, fareye veya ekrana göre konumunu belirtebilirsiniz. Bu özellikler birlikte çalışarak Popupkonumunu belirtme esnekliği sağlar.
Uyarı
ToolTip ve ContextMenu sınıfları da bu beş özelliği tanımlar ve benzer şekilde davranır.
Açılan Menü'leri Konumlandırma
Bir Popup yerleşimi, bir UIElement'e veya ekranın tamamına göre olabilir. Aşağıdaki örnek, bir Popup'e göre dört adet UIElement denetimi (bu durumda bir görüntü) oluşturur. Tüm Popup denetimlerinin PlacementTarget özelliği image1
olarak ayarlanmıştır, ancak her Popup yerleştirme özelliği için farklı bir değere sahiptir.
<Canvas Width="200" Height="150">
<Image Name="image1"
Canvas.Left="75"
Source="Water_lilies.jpg" Height="200" Width="200"/>
<Popup IsOpen="True" PlacementTarget="{Binding ElementName=image1}"
Placement="Bottom">
<TextBlock FontSize="14" Background="LightGreen">Placement=Bottom</TextBlock>
</Popup>
<Popup IsOpen="True" PlacementTarget="{Binding ElementName=image1}"
Placement="Top">
<TextBlock FontSize="14" Background="LightGreen">Placement=Top</TextBlock>
</Popup>
<Popup IsOpen="True" PlacementTarget="{Binding ElementName=image1}"
Placement="Left">
<TextBlock FontSize="14" Background="LightGreen">Placement=Left</TextBlock>
</Popup>
<Popup IsOpen="True" PlacementTarget="{Binding ElementName=image1}"
Placement="Right">
<TextBlock FontSize="14" Background="LightGreen">Placement=Right</TextBlock>
</Popup>
</Canvas>
Aşağıdaki çizimde görüntü ve Popup denetimleri gösterilmektedir
Bu basit örnek, PlacementTarget ve Placement özelliklerinin nasıl ayarlandığını gösterir, ancak PlacementRectangle, HorizontalOffsetve VerticalOffset özelliklerini kullanarak, Popup nerede konumlandırıldığı üzerinde daha fazla denetim sahibi olursunuz.
![UYARI] El tercihi ile ilgili Windows ayarlarınıza bağlı olarak, açılır pencere üstte veya altta gösterildiğinde sola veya sağa hizalanmış olabilir. Önceki görüntü, sağ el uyumunu gösterir ve bu, açılır pencerenin sola yerleşmesini sağlar.
Terimlerin Tanımları: Açılır Pencere Anatomisi
Aşağıdaki terimler, PlacementTarget, Placement, PlacementRectangle, HorizontalOffsetve VerticalOffset özelliklerinin birbiriyle ve Popupile nasıl ilişkili olduğunu anlamak için yararlıdır:
Hedef nesne
Hedef alan
Hedef kaynak
Açılan hizalama noktası
Bu terimler, Popup ve ilişkili olduğu denetimin çeşitli yönlerine başvurmak için kullanışlı bir yol sağlar.
Hedef Nesne
hedef nesne, Popup ilişkili olduğu öğedir. PlacementTarget özelliği ayarlanırsa hedef nesneyi belirtir. PlacementTarget ayarlanmadıysa ve Popup bir üst öğesi varsa, üst öğe hedef nesnedir. Eğer PlacementTarget değeri ve üst öğe yoksa, hedeflenen nesne bulunmaz ve Popup, ekrana göre konumlandırılır.
Aşağıdaki örnek, bir Popupalt öğesi olan bir Canvas oluşturur. Örnek, PlacementTargetüzerinde Popup özelliğini ayarlamaz. Placement için varsayılan değer PlacementMode.Bottomolduğundan, PopupCanvasaltında görünür.
<Canvas Margin="5" Background="Red" Width="200" Height="150" >
<Ellipse Canvas.Top="60" Canvas.Left="50"
Height="85" Width="60"
Fill="Black"/>
<Popup IsOpen="True" >
<TextBlock Background="LightBlue" FontSize="18">This is a Popup</TextBlock>
</Popup>
</Canvas>
Aşağıdaki çizimde, PopupCanvasgöre konumlandırılmış olduğu gösterilmektedir.
Aşağıdaki örnek, bir Popupalt öğesi olan bir Canvas oluşturur, ancak bu kez PlacementTargetellipse1
olarak ayarlanır ve açılır pencere Ellipsealtında görünür.
<Canvas Margin="5" Background="Red" Width="200" Height="150" >
<Ellipse Name="ellipse1"
Canvas.Top="60" Canvas.Left="50"
Height="85" Width="60"
Fill="Black"/>
<Popup IsOpen="True" PlacementTarget="{Binding ElementName=ellipse1}">
<TextBlock Background="LightBlue" FontSize="18">This is a Popup</TextBlock>
</Popup>
</Canvas>
Aşağıdaki çizimde, PopupEllipsegöre konumlandırılmış olduğu gösterilmektedir.
Uyarı
ToolTipiçin varsayılan Placement değeri Mousedeğeridir. ContextMenuiçin varsayılan Placement değeri MousePointdeğeridir. Bu değerler daha sonra "Özelliklerin Birlikte Çalışması" bölümünde açıklanmıştır.
Hedef Alan
hedef alanı, ekranda Popup göreli olduğu alandır. Önceki örneklerde, Popup hedef nesnenin sınırlarıyla hizalanır, ancak bazı durumlarda, Popup hedef nesnesi olsa bile Popup diğer sınırlarla hizalanır. PlacementRectangle özelliği ayarlanırsa, hedef alan hedef nesnenin sınırlarından farklıdır.
Aşağıdaki örnek, her biri bir Canvas ve bir Rectangleiçeren iki Popup nesnesi oluşturur. Her iki durumda da, Popup hedef nesnesi Canvas. İlk Popup'deki Canvas, PlacementRectangle kümesine sahip olup, X, Y, Widthve Height özellikleri sırasıyla 50, 50, 50 ve 100 olarak ayarlanmış. İkinci Popup'deki Canvas, PlacementRectangle ayarına sahip değil. Sonuç olarak, ilk PopupPlacementRectangle altına, ikinci PopupCanvasaltına yerleştirilir. Her Canvas, ilk RectanglePlacementRectangle ile aynı sınırlara sahip bir Popup de içerir. PlacementRectangle uygulamada görünür bir öğe oluşturmadığını unutmayın; örnek, Rectangletemsil eden bir PlacementRectangle oluşturur.
<StackPanel Orientation="Horizontal" Margin="50,50,0,0">
<Canvas Width="200" Height="200" Background="Red">
<Rectangle Canvas.Top="50" Canvas.Left="50"
Width="50" Height="100"
Stroke="White" StrokeThickness="3"/>
<Popup IsOpen="True" PlacementRectangle="50,50,50,100">
<TextBlock FontSize="14" Background="Yellow"
Width="140" TextWrapping="Wrap">
This is a popup with a PlacementRectangle.
</TextBlock>
</Popup>
</Canvas>
<Canvas Width="200" Height="200" Background="Red" Margin="30,0,0,0">
<Rectangle Canvas.Top="50" Canvas.Left="50"
Width="50" Height="100"
Stroke="White" StrokeThickness="3"/>
<Popup IsOpen="True">
<TextBlock FontSize="14" Background="Yellow"
Width="140" TextWrapping="Wrap">
This is a popup without a PlacementRectangle.
</TextBlock>
</Popup>
</Canvas>
</StackPanel>
Aşağıdaki çizimde, önceki örneğin sonucu gösterilmektedir.
Hedef Kaynak ve Açılan Hizalama Noktası
hedef kaynağı ve açılır pencere hizalama noktası, sırasıyla hedef alan ve açılır pencere üzerinde konumlandırma için kullanılan referans noktalarıdır. Açılan pencereye hedef alandan uzaklık sağlamak için HorizontalOffset ve VerticalOffset özelliklerini kullanabilirsiniz. HorizontalOffset ve VerticalOffset hedef orijin ve açılır pencere hizalama noktası ile ilişkilidir. Placement özelliğinin değeri, hedef kaynağın ve açılır hizalama noktasının nerede bulunduğunu belirler.
Aşağıdaki örnek bir Popup oluşturur ve HorizontalOffset ve VerticalOffset özelliklerini 20 olarak ayarlar. Placement özelliği Bottom (varsayılan) olarak ayarlanır, bu nedenle hedef kaynak hedef alanın sol alt köşesi ve açılır hizalama noktası Popupsol üst köşesi olur.
<Canvas Width="200" Height="200" Background="Yellow" Margin="20">
<Popup IsOpen="True" Placement="Bottom"
HorizontalOffset="20" VerticalOffset="20">
<TextBlock FontSize="14" Background="#42F3FD">
This is a popup.
</TextBlock>
</Popup>
</Canvas>
Aşağıdaki çizimde, önceki örneğin sonucu gösterilmektedir.
Özellikler Birlikte Nasıl Çalışır?
Doğru hedef alanı, hedef kaynağı ve açılır hizalama noktasını bulmak için PlacementTarget, PlacementRectangleve Placement değerleri birlikte değerlendirilmelidir. Örneğin, Placement değeri Mouseise hedef nesne yoktur; bu durumda PlacementRectangle yoksayılır ve hedef alan fare işaretçisinin sınırları olur. Öte yandan, PlacementBottomise, hedef nesneyi PlacementTarget veya üst öğe belirler ve PlacementRectangle hedef alanı belirler.
Aşağıdaki tabloda hedef nesne, hedef alan, hedef kaynak ve açılır hizalama noktası açıklanır ve her PlacementTarget numaralandırma değeri için PlacementRectangle ve PlacementMode kullanılıp kullanılmadığı gösterilir.
Yerleştirme Modu | Hedef nesne | Hedef alan | Hedef kaynak | Açılan hizalama noktası |
---|---|---|---|---|
Absolute | Uygulanamaz. PlacementTarget göz ardı edilir. | Ekran veya ayarlanmışsa PlacementRectangle. PlacementRectangle ekrana göredir. | Hedef alanın sol üst köşesi. | Popup'ın sol üst köşesi. |
AbsolutePoint | Uygulanamaz. PlacementTarget göz ardı edilir. | Ekran veya ayarlanmışsa PlacementRectangle. PlacementRectangle ekrana göredir. | Hedef alanın sol üst köşesi. | Popup'ın sol üst köşesi. |
Bottom | PlacementTarget veya ebeveyn. | Hedef nesne veya eğer ayarlanmışsa PlacementRectangle. PlacementRectangle hedef nesneye göredir. | Hedef alanın sol alt köşesi. | Popup'ın sol üst köşesi. |
Center | PlacementTarget veya ebeveyn. | Hedef nesne veya eğer ayarlanmışsa PlacementRectangle. PlacementRectangle hedef nesneye göredir. | Hedef alanın merkezi. | Popup'un merkezi. |
Custom | PlacementTarget veya ebeveyn. | Hedef nesne veya eğer ayarlanmışsa PlacementRectangle. PlacementRectangle hedef nesneye göredir. | CustomPopupPlacementCallbacktarafından tanımlanır. | CustomPopupPlacementCallbacktarafından tanımlanır. |
Left | PlacementTarget veya ebeveyn. | Hedef nesne veya eğer ayarlanmışsa PlacementRectangle. PlacementRectangle hedef nesneye göredir. | Hedef alanın sol üst köşesi. | Popupsağ üst köşesi. |
Mouse | Uygulanamaz. PlacementTarget göz ardı edilir. | Fare işaretçisinin sınırları. PlacementRectangle göz ardı edilir. | Hedef alanın sol alt köşesi. | Popup'ın sol üst köşesi. |
MousePoint | Uygulanamaz. PlacementTarget göz ardı edilir. | Fare işaretçisinin sınırları. PlacementRectangle göz ardı edilir. | Hedef alanın sol üst köşesi. | Popup'ın sol üst köşesi. |
Relative | PlacementTarget veya ebeveyn. | Hedef nesne veya eğer ayarlanmışsa PlacementRectangle. PlacementRectangle hedef nesneye göredir. | Hedef alanın sol üst köşesi. | Popup'ın sol üst köşesi. |
RelativePoint | PlacementTarget veya ebeveyn. | Hedef nesne veya eğer ayarlanmışsa PlacementRectangle. PlacementRectangle hedef nesneye göredir. | Hedef alanın sol üst köşesi. | Popup'ın sol üst köşesi. |
Right | PlacementTarget veya ebeveyn. | Hedef nesne veya eğer ayarlanmışsa PlacementRectangle. PlacementRectangle hedef nesneye göredir. | Hedef alanın sağ üst köşesi. | Popup'ın sol üst köşesi. |
Top | PlacementTarget veya ebeveyn. | Hedef nesne veya eğer ayarlanmışsa PlacementRectangle. PlacementRectangle hedef nesneye göredir. | Hedef alanın sol üst köşesi. | Popupsol alt köşesi. |
Aşağıdaki illüstrasyonlar, her Popup değeri için PlacementMode, hedef alan, hedef başlangıcı ve açılır menü hizalama noktasını göstermektedir. Her şekilde hedef alan sarı, Popup mavidir.
Açılan Pencere Ekranın Kenarıyla Karşılaştığında
Güvenlik nedeniyle, Popup ekranın kenarında gizlenemez. Popup bir ekran kenarıyla karşılaştığında aşağıdaki üç şeyden biri gerçekleşir:
Açılan pencere, Popup'ı gizleyecek olan ekran kenarı boyunca kendini yeniden hizalar.
Açılan pencerede farklı bir açılır hizalama noktası kullanılır.
Açılan pencerede farklı bir hedef kaynak ve açılır pencere hizalama noktası kullanılır.
Bu seçenekler bu bölümün ilerleyen bölümlerinde açıklanmaktadır.
Popup bir ekran kenarıyla karşılaştığında davranışı, Placement özelliğinin değerine ve açılır pencereyle hangi ekran kenarının karşılaştığına bağlıdır. Aşağıdaki tabloda, Popup her PlacementMode değeri için bir ekran kenarıyla karşılaştığında ortaya çıkabilecek davranış özetlemektedir.
Yerleştirme Modu | Üst kenar | Alt kenar | Sol kenar | Sağ kenar |
---|---|---|---|---|
Absolute | Üst kenarla hizalanır. | Alt kenarla hizalanır. | Sol kenara hizalanır. | Sağ kenarla hizalanır. |
AbsolutePoint | Üst kenarla hizalanır. | Açılır pencerenin hizalama noktası, Popup'ın sol alt köşesine dönüşür. | Sol kenara hizalanır. | Açılan hizalama noktası, Popupsağ üst köşesine değişir. |
Bottom | Üst kenarla hizalanır. | Hedef başlangıç noktası, hedef alanın sol üst köşesine değişir ve açılır hizalama noktası, Popup'ın sol alt köşesine değişir. | Sol kenara hizalanır. | Sağ kenarla hizalanır. |
Center | Üst kenarla hizalanır. | Alt kenarla hizalanır. | Sol kenara hizalanır. | Sağ kenarla hizalanır. |
Left | Üst kenarla hizalanır. | Alt kenarla hizalanır. | Hedef orijin, hedef alanın sağ üst köşesine ayarlanır ve açılır pencere hizalama noktası, Popup'ın sol üst köşesine değişir. | Sağ kenarla hizalanır. |
Mouse | Üst kenarla hizalanır. | Hedefin orijini, hedef alanın sol üst köşesine (fare işaretçisinin sınırlarına) ve açılır pencerenin hizalama noktası ise Popup'nın sol alt köşesine değişir. | Sol kenara hizalanır. | Sağ kenarla hizalanır. |
MousePoint | Üst kenarla hizalanır. | Açılır pencerenin hizalama noktası, Popup'ın sol alt köşesine dönüşür. | Sol kenara hizalanır. | Açılır pencerenin hizalama noktası, açılır pencerenin sağ üst köşesine değişir. |
Relative | Üst kenarla hizalanır. | Alt kenarla hizalanır. | Sol kenara hizalanır. | Sağ kenarla hizalanır. |
RelativePoint | Üst kenarla hizalanır. | Açılır pencerenin hizalama noktası, Popup'ın sol alt köşesine dönüşür. | Sol kenara hizalanır. | Açılır pencerenin hizalama noktası, açılır pencerenin sağ üst köşesine değişir. |
Right | Üst kenarla hizalanır. | Alt kenarla hizalanır. | Sol kenara hizalanır. | Hedef orijin, hedef bölgesinin sol üst köşesine, açılır hizalama noktası ise Popup'ün sağ üst köşesine değişir. |
Top | Hedefin başlangıç noktası, hedef alanın sol alt köşesine, açılır pencere hizalama noktası ise Popupsol üst köşesine değişir. Aslında bu, PlacementBottomile aynıdır. | Alt kenarla hizalanır. | Sol kenara hizalanır. | Sağ kenarla hizalanır. |
Ekran Kenarına Hizalama
Popup, Popup tamamının ekranda görünmesi için kendisini yeniden konumlandırarak ekranın kenarına hizalanabilir. Bu durumda, hedef kaynak ile açılır hizalama noktası arasındaki uzaklık HorizontalOffset ve VerticalOffsetdeğerlerinden farklı olabilir. Placement Absolute, Centerveya Relativeolduğunda, Popup kendisini her ekran kenarına hizalar. Örneğin, bir Popup için Placement'in Relative'ye ve VerticalOffset'ün 100'e ayarlandığını varsayalım. Ekranın alt kenarı Popuptamamını veya bir kısmını gizlerse, Popup kendisini ekranın alt kenarı boyunca yeniden konumlandırır ve hedef çıkış noktası ile açılan hizalama noktası arasındaki dikey uzaklık 100'den azdır. Aşağıdaki çizimde bu gösterilmektedir.
Açılan Hizalama Noktasını Değiştirme
Placement AbsolutePoint, RelativePointveya MousePointise, açılan pencere alt veya sağ ekran kenarıyla karşılaştığında açılır hizalama noktası değişir.
Aşağıdaki çizimde, alt ekran kenarı Popuptamamını veya bir kısmını gizlediğinde açılır hizalama noktasının Popupsol alt köşesi olduğu gösterilmektedir.
Aşağıdaki çizim, Popup sağ ekran kenarı tarafından gizlendiğinde, hizalama noktasının Popup'in sağ üst köşesi olduğunu göstermektedir.
Popup, alt ve sağ ekran kenarlarına ulaşırsa, açılır pencerenin hizalama noktası Popup'in sağ alt köşesi olur.
Hedef Başlangıç Noktası ve Açılır Hizalama Noktasını Değiştirme
Placement Bottom, Left, Mouse, Rightveya Topolduğunda, belirli bir ekran kenarıyla karşılaşıldığında hedef kaynak ve açılır hizalama noktası değişir. Konumun değişmesine neden olan ekran kenarı, PlacementMode değerine bağlıdır.
Aşağıdaki çizim, PlacementBottom olduğunda ve Popup alt ekran kenarıyla karşılaştığında hedef orijinin hedef alanın sol üst köşesi, açılır pencerenin hizalama noktasının ise Popupsol alt köşesi olduğunu göstermektedir.
Aşağıdaki çizimde, PlacementLeft ve Popup sol ekran kenarıyla karşılaştığında, hedefin başlangıç noktası hedef alanın sağ üst köşesi ve açılan hizalama noktası Popupsol üst köşesi olmaktadır.
Aşağıdaki çizimde, PlacementRight olduğunda ve Popup sağ ekran kenarıyla karşılaştığında hedef orijinin hedef alanının sol üst köşesi olduğu ve açılır hizalama noktasının Popupsağ üst köşesi olduğu gösterilmektedir.
Aşağıdaki çizim, PlacementTop olduğunda ve Popup üst ekran kenarıyla karşılaştığında hedef kaynağın konumunun hedef alanın sol alt köşesi, açılan pencere hizalama noktasının ise Popupsol üst köşesi olduğunu göstermektedir.
Aşağıdaki çizimde, PlacementMouse olduğunda ve Popup alt ekran kenarıyla karşılaştığında, hedef köşe hedef alanın sol üst köşesi (fare işaretçisinin sınırları) olarak belirlenir ve açılır pencerenin hizalama noktası Popup'ün sol alt köşesi olur.
Farenin ekran kenarına yakın olması nedeniyle yeni hizalama noktası
Açılır Pencere Yerleşimini Özelleştirme
Placement özelliğini Customolarak ayarlayarak hedef kaynak ve açılır hizalama noktasını özelleştirebilirsiniz. Ardından, CustomPopupPlacementCallbackiçin (tercih sırasına göre) bir dizi olası yerleştirme noktası ve birincil eksen döndüren bir Popup temsilcisi tanımlayın. Popup'ın en büyük bölümünü gösteren nokta seçilir. Popup ekranın kenarı tarafından gizlenirse Popup konumu otomatik olarak ayarlanır. Örnek için bkz. Özel Açılır Konum Belirle.
Ayrıca bakınız
.NET Desktop feedback