2011-02-03 36 views
7

Bellekte bulunan ve henüz oluşturulmamış olan UIElement boyutunu elde etmenin bir yolu var mı?WPF - Bellekte UIElement'in boyutunu aldınız mı?

Şu anda DataTable'dan Grid oluşturan bir rutine sahibim ve daha sonra Grid'i FixedDocument'a ekler. Grid'un boyutunu bilmem gerekiyor çünkü gerektiğinde otomatik olarak Portre'den Manzaraya geçmek istiyorum; hatta ızgaranın FontSize değerini değiştirin. Açık bir Width veya Height seti varsa

cevap

16

Bir öğenin işlemek veya öğe işlenecek beklemek zorlamak gerekir. Daha sonra ActualHeight ve ActualWidth özelliklerini kullanabilirsiniz.

render zorlamak için:

MenuItem item = new MenuItem(); 
    item.Header = "bling"; 
    item.Icon = someIcon; 
    //Force render 
    item.Measure(new Size(Double.PositiveInfinity, Double.PositiveInfinity)); 
    item.Arrange(new Rect(item.DesiredSize)); 

Bu örnekte MenuItem Bir açık yüksekliğini veya genişliğini verilmiş değildir. Bununla birlikte, render işlemini zorlamak, verilen başlık metnini ve ikonunu göz önünde bulundurur.

+0

'MenuItem' benim için çalışmadı, ama' StackPanel' veya 'Viewbox'' yaptı. – vossad01

+0

'UIElement' sınıfında 'ActualWidth' diye bir özellik yok :(( – Boris

+0

evet, bu benim için çalıştı.Onlar, bu benim için çalıştı ..... –

1

Bunu sadece belirleyebilirsiniz. O zaman bile, senaryoya bağlı olarak, Düzen geçişi işlenene kadar oluşmayacağından ve oluşturulma zamanından itibaren ActualWidth/ActualHeight ayarlanmayacağı için işleme zamanında değişebilir.

+0

Bu yüzden tek seçeneğim, farklı yazı tipi boyutları ve sayfa düzenleri kullanarak denetimi tekrar tekrar yerine getirene kadar tekrar tekrar sunmaktır. –

+0

@Sonny: Bu, ya da başka bir yere render ... RenderTargetBitmap, vb, "kapalı ekran" render denemek ve sonra kullanıcı görmek istemiyorsanız ayarlamak için denemek için kullanabilirsiniz. .. –

İlgili konular