2013-05-06 16 views
10

olarak ayarlama İlk açıldığında bir görünümün varsayılan boyutunu ayarlamalıyım, ancak kullanıcının bunu genişletmesine izin vermesi gerekir. (Diğer nedenlerden ötürü, WindowManager'ımdaki SizeToContent özelliğini kullanamıyorum.)İlk pencere boyutunu Caliburn.micro

Bu, yaygın bir şey olmalı, varsayılan pencere boyutunu ayarlamada önerilen yaklaşım nedir? o önerdiğimiz yaklaşım yerine ön yükleme/sen/bir UserControl önyükler vb Window yerine ve sonra set Yükseklik, Genişlik, göstermek gösteren eğer

+0

Eğer görünümünde belirli bir boyutunu ayarlamak eğer bu çalışma görebilirsiniz tek yolu, daha sonra, görüntü yüklendikten sonra boyutu otomatik olarak ayarlayarak, pencerenin içerik için doğru boyut olduğundan emin olarak görünümü serbest bırakın. Görünümünüzde ayarladığınız bir davranış olabilir – Charleh

cevap

7

Bu aslında beni dinlenmişti bir şeydir süre. Anladığım kadarıyla, beni daha önce anlayamadığım için sinirlendi.

Kalibrasyonda bir pencere görüntülendiğinde, Window nesnesini çağırırken öznitelikleri ayarlayabilirsiniz.

public class ShellViewModel : PropertyChangedBase, IShell 
{ 
    private readonly IWindowManager windowManager; 

    public ShellViewModel() 
    { 
     this.windowManager = new WindowManager(); 
     this.windowManager.ShowWindow(new LameViewModel()); 
    } 
} 

iki vardır:, böyle bir şey ile

İlk başlayacaktı:

Yani, 600 x 300 penceresindeki yükseklik ve genişlik ayarlamak istediğiniz Diyelim ShowWindow yöntemindeki diğer alanlar. Üçüncü parametre, öznitelikleri Pencere nesnesinde dinamik olarak ayarlamanıza olanak tanır.

public class ShellViewModel : PropertyChangedBase, IShell 
{ 
    private readonly IWindowManager windowManager; 

    public ShellViewModel() 
    { 
     this.windowManager = new WindowManager(); 

     dynamic settings = new ExpandoObject(); 
     settings.Height = 600; 
     settings.Width = 300; 
     settings.SizeToContent = SizeToContent.Manual; 

     this.windowManager.ShowWindow(new LameViewModel(), null, settings); 
    } 
} 

Ben belgeleri bu çalışma hakkında daha fazla bilgi olsaydı, ama işte başardık.

+2

Başka bir ayar eklemeniz gerekebilir: 'SizeToContent = SizeToContent.Manual'. – Govert

+0

Tamam, güncellendi. – GrantByrne

3

Bu gönderinin yapıldığı sırada geçerli olup olmadığından emin değilsiniz, ancak şu anda izleyen herkes için pencere boyutu, uygulama önyükleyicisindeki CaliburnMicro'da kolayca nasıl ayarlanabildiğinizdir. Kodum, başlangıçta önceki pencerede olduğu gibi aynı pencere boyutlarını korumak için tasarlanmıştır. Ekran yüksekliğini/genişliğini kapalı alandaki ayar özellikleri olarak kaydediyorum ve sonra bunları başlangıçta geri getiriyorum (geçerli ekran boyutundan büyük olmamak için bir kontrol ile).

AppBootstrapper.cs

İşte
 protected override void OnStartup(object sender, System.Windows.StartupEventArgs e) { 

     double width = Settings.Default.screen_width; //Previous window width 
     double height = Settings.Default.screen_height; //Previous window height 

     double screen_width = System.Windows.SystemParameters.PrimaryScreenWidth; 
     double screen_height = System.Windows.SystemParameters.PrimaryScreenHeight; 

     if (width > screen_width) width = (screen_width - 10); 
     if (height > screen_height) height = (screen_height-10); 

     Dictionary<string, object> window_settings = new Dictionary<string, object>(); 

     window_settings.Add("Width", width); 
     window_settings.Add("Height", height); 

     DisplayRootViewFor<IShell>(window_settings); 
    } 
2

Hugh'un Yanıta göre cevap:

 Dictionary<string, object> window_settings = new Dictionary<string, object>(); 
     window_settings.Add("WindowState", System.Windows.WindowState.Maximized); 

     DisplayRootViewFor<IShellViewModel>(window_settings); 
İlgili konular