Açılan Pencere

Denetim, Popup içeriği belirlenen bir öğeye veya ekran koordinatına göre geçerli uygulama penceresi üzerinde kayan ayrı bir pencerede görüntülemenin bir yolunu sağlar.

Aşağıdaki çizim, bir Popup denetiminin kendi üst öğesi olan Button denetimine göre nasıl konumlandırıldığını göstermektedir.

Düğme denetimine göre konumlandırılmış bir Açılır pencere denetimi.

Aşağıdaki tabloda, Açılan pencere denetimiyle çalışmaya yönelik yaygın görevler listelenmiştir:

Başlık Description
Açılan Pencereye Animasyon Ekleme Görsel taslakları ve animasyonları kullanarak açılır pencereye animasyon eklemeyi öğrenin.
Açılır Pencere Yerleştirme Davranışı Farklı yerleştirme modları ve bir açılır pencereyi öğelere veya ekran koordinatlarına göre konumlandırma hakkında bilgi edinin.
Özel Açılır Pencere Konumunu Belirtme Doğru açılır pencere konumlandırması için özel yerleştirme mantığı tanımlamayı öğrenin.

Açılan Pencere nedir?

Denetim Popup , içeriği ekrandaki bir öğeye veya noktaya göre ayrı bir pencerede görüntüler. Popup görünür olduğunda özelliği IsOpen olarak trueayarlanır.

Uyarı

Üst nesnenin üzerine fare işaretçisi geldiğinde, A Popup otomatik olarak açılmaz. Popup öğesini otomatik açmak istiyorsanız, ToolTip veya ToolTipService sınıfını kullanın. Daha fazla bilgi için bkz. ToolTip.

Açılan Pencere Oluşturma

Aşağıdaki örnek, denetimi bir Popup denetimin alt öğesi ToggleButton olarak tanımlar. Bir ToggleButton yalnızca bir alt öğeye sahip olabileceğinden, bu örnek ToggleButton ve Popup denetimlerinin metnini bir StackPanel öğesine yerleştirir. Açılan pencere IsOpen özelliği, düğmenin IsChecked özelliğiyle eşitlemek için veri bağlamayı kullanır. Düğmeyi seçtiğinizde açılır pencere otomatik olarak açılır veya kapanır. İçerik, düğmenin yanındaki uygulama penceresinin üzerinde kayan ayrı bir pencerede görüntülenir.

<ToggleButton x:Name="TogglePopupButton" Height="30" Width="150" HorizontalAlignment="Left">
    <StackPanel>
        <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center">
            <Run Text="Is button toggled? " />
            <Run Text="{Binding IsChecked, ElementName=TogglePopupButton}" />
        </TextBlock>

        <Popup Name="myPopup" IsOpen="{Binding IsChecked, ElementName=TogglePopupButton}">
            <Border BorderThickness="1">
                <TextBlock Name="myPopupText" Background="LightBlue" Foreground="Blue" Padding="30">
                Popup Text
                </TextBlock>
            </Border>
        </Popup>
    </StackPanel>
</ToggleButton>

Açılır pencereyi uygulayan denetimler

Bir denetimi diğer denetimlerin içine yerleştirebilirsiniz Popup . Aşağıdaki denetimler belirli kullanımlar için bir açılır pencere uygular:

  • ToolTip. Kullanıcılar bir öğenin üzerine geldiğinde veya odaklandığında bağlamsal yardımı göstermek için açılır pencere kullanır. Daha fazla bilgi için bkz. ToolTip.

  • ContextMenu. Genellikle kullanıcılar sağ tıkladığında bir öğenin komut seçeneklerini göstermek için bir açılır pencere kullanır. Daha fazla bilgi için bkz. ContextMenu.

  • ComboBox. Seçilebilir öğelerin açılan listesini göstermek veya gizlemek için bir açılır pencere kullanır. Daha fazla bilgi için bkz. ComboBox.

Stiller ve şablonlar

Kontrol, görünümünü özelleştirmek için kullanabileceğiniz XAML stil özellikleri sunmaktadır. Denetim, şablon bölümleri veya görsel durumlarıyla varsayılan bir şablon tanımlamaz, ancak davranışını özelleştirebilirsiniz. Daha fazla bilgi için Açılır pencere davranışı ve görünümü bölümüne bakın.

İçerik özelliği

Bu denetim, içerik özelliği olarak Child özelliğini kullanır. Child özelliği, açılan pencerenin görüntülediği tek bir alt öğeyi temsil eder.

Parçalar

Bu denetim herhangi bir şablon parçası tanımlamaz.

Görsel durumlar

Bu denetim herhangi bir görsel durum tanımlamaz.

Popup denetimi, davranışını ve görünümünü özelleştirmeniz için kullanılabilecek işlevler sağlar. Örneğin, açık ve kapalı davranış, animasyon, opaklık ve bit eşlem efektleri, Popup boyut ve konum ayarlayabilirsiniz.

Açma ve kapatma davranışı

Popup denetimi, IsOpen özelliği true olarak ayarlandığında içeriğini görüntüler. Varsayılan olarak, Popup özelliği IsOpen olarak ayarlanana kadar false açık kalır. Ancak, StaysOpen özelliğini false olarak ayarlayarak varsayılan davranışı değiştirebilirsiniz. Bu özelliği false olarak ayarladığınızda Popup içerik penceresi fare yakalar. Pencerenin dışında bir fare olayı gerçekleştiğinde Popup fare yakalamayı kaybeder ve pencere kapanır.

Opened ve Closed olayları, Popup içerik penceresi açıldığında veya kapandığında tetiklenir.

Animasyon

Denetim, Popup genellikle soluk ve slayt oluşturma gibi davranışlarla ilişkili animasyonlar için yerleşik desteğe sahiptir. Bu animasyonları etkinleştirmek için PopupAnimation özelliğini bir PopupAnimation enum değerine ayarlayabilirsiniz. Animasyonların düzgün çalışması için Popup özelliğini AllowsTransparency olarak ayarlamanız gerekir.

Storyboard denetimine Popup gibi animasyonlar da uygulayabilirsiniz.

Opaklık ve bit eşlem efektleri

Denetimin OpacityPopup özelliğinin içeriği üzerinde hiçbir etkisi yoktur. Varsayılan olarak, Popup içerik penceresi donuk durumdadır. Saydam bir Popup oluşturmak için, AllowsTransparency özelliğini true olarak ayarlayın.

Popup öğesinin içeriği, DropShadowBitmapEffect, doğrudan Popup denetiminde veya üst penceredeki başka bir öğede ayarladığınız bit eşlem efektlerini devralmıyor. Bit eşlem efektlerinin içeriğinin Popupüzerinde görünmesi için bit eşlem efektini doğrudan içeriği üzerinde ayarlamanız gerekir. Örneğin, bir Popup alt öğesi bir StackPanel ise, bit eşlem efektini StackPanel üzerinde ayarlayın.

Varsayılan olarak, Popup içeriğine göre otomatik olarak boyutlanır. Otomatik boyutlandırma gerçekleştiğinde, içerik için tanımlanan ekran alanının varsayılan boyutu bit eşlem efektlerinin görüntülenmesi için Popup yeterli alan sağlamadığından bazı bit eşlem efektleri gizlenebilir.

Popup içeriğe bir RenderTransform ayarladığınızda, içerik de gizlenebilir. Bu senaryoda, dönüştürülen Popup içeriğin özgün Popupalanının ötesine genişletilmesi durumunda bazı içerikler gizlenebilir. Bit eşlem efekti veya dönüştürme daha fazla alan gerektiriyorsa, denetim için daha fazla alan sağlamak üzere içeriğin çevresinde Popup bir kenar boşluğu tanımlayabilirsiniz.

Açılır pencere konumunu tanımlama

PlacementTarget, PlacementRectangle, Placement, HorizontalOffset, ve VerticalOffsetProperty özelliklerini ayarlayarak bir açılır pencere konumlandırabilirsiniz. Daha fazla bilgi için Açılır Pencere Yerleştirme Davranışı'na bakınız. Ekranda bir Popup görüntülendiğinde, üst öğesi yeniden konumlandırıldığında kendisini yeniden konumlandırmaz.

Açılır pencere yerleşimini özelleştirme

Popup kontrolünün PlacementTarget görünmesini istediğiniz yere göre Popup konumunu belirleyen bir koordinat kümesi belirterek özelleştirebilirsiniz.

Özelleştirilmiş yerleştirme yapmak için Placement özelliğini Custom olarak ayarlayın. Ardından, CustomPopupPlacementCallback için bir dizi olası yerleştirme noktası ve birincil ekseni (tercih sırasına göre) döndüren bir Popup temsilci tanımlayın. öğesinin en büyük bölümünü Popup gösteren nokta otomatik olarak seçilir. Bir örnek için bkz. Özel Açılan Konum Belirtme.

Denetimin Popup kendi görsel ağacı yoktur. yöntemini çağırdığınızda MeasureOverride 0 (sıfır) boyutu döndürür. Ancak, özelliğini IsOpenolarak ayarladığınızdatrue, denetim kendi görsel ağacıyla yeni bir pencere oluşturur. Yeni pencere, Child içeriğini Popup içerir. Yeni pencerenin genişliği ve yüksekliği, ekranın genişliğinin veya yüksekliğinin yüzde 75'inden büyük olamaz.

Denetim, Popup içeriğine Child mantıksal alt öğe olarak bir başvuru tutar. Denetim yeni pencereyi oluşturduğunda, Popup içeriği pencerenin görsel alt öğesi olur ve Popup'in mantıksal alt öğesi olarak kalır. Buna karşılık, Popup, Child içeriğinin mantıksal üst öğesi olarak kalır.

Ayrıca bakınız