2015-04-14 27 views
5

Caliburn ve WPF MVVM'ye yeni uygularken pencere başlığının üzerine yazılır, bu yüzden oldukça basit bir şeyle ilgileniyor olabilir ve web'de hiçbir şey bulamadım.Caliburn'in iletkeni <object> modelini

Caliburn.Micro ile basit bir wpf projesi oluşturun. ShellView.xaml'de pencere başlığını ayarla. İyi çalışıyor. Ana MetroWindow başlığı açıklandığı gibi görüntüler.

[Export(typeof (IShell))] 
public class ShellViewModel : Conductor<object> 
{} 

ve Pencere başlığı bu ViewModel tam nitelikli adıdır:

İşleri ince: için

[Export(typeof (IShell))] 
public class ShellViewModel : PropertyChangedBased, IShell 
{} 

Ama değiştirin. HER yardım takdir edilecektir. Teşekkürler.

cevap

8

Böyle kullanabilirsiniz:

[Export(typeof (IShell))] 
public class ShellViewModel : Conductor<IScreen> 
{ 
    public ShellViewModel() 
    { 
     DisplayName = "Your window title"; 
    } 
} 

benim depo sen Caliburn.Micro kullanarak WPF Bazı uygulamaları bulabilir, örneğin:

+0

Bağlantı ve öneri için teşekkürler. Hala aynı. Caliburn.Micro 2.02 kullandığımı belirtmeliydim. Önyükleyicinizde dikkatiniz 1.5.2 kullanıyor. –

+0

Projenizi gösterebilir misiniz? Yeni sürümle örnek bir uygulama hazırladım ve işe yarıyor. Bu [dokümanları] gördünüz mü (https://caliburnmicro.codeplex.com/wikipage?title=Screens,%20Conductors%20and%20Composition)? (Gitmem gerek, yarın yardım etmeye çalışacağım). –

0

Wojciech'e teşekkürler Beni doğru yönde işaret ettiğin için.

ShellViewModel, PropertyChangeBase ve IShell'i miras aldığında, ShellView.xaml uygulamasında Title = "Window Title" öğesini ayarlar. Caliburn.Micro 2.0.2 kullanıyorum ve İletken (tek ekran iletken) devralan Fakat pencere başlığı (benim durumumda) görünümü modelinin tam olarak nitelenmiş adı ile yazılır: Bu gibi görünüyor

FBAGOLDEVALUATOR.APP.VIEWMODELS.SHELLVIEWMODEL 

Bir şey kaçırmadığım sürece Caliburn.Micro v2.02'deki hata.

Çözüm: Pencerenin Title özelliğini, ViewModel'deki bir public özelliğine .xaml içinde bağlayın. .xaml satır: ShellViewModel.cs içinde

Title="{Binding Path=DisplayTitle, Mode=OneWay}" 

özelliği:

private string _displayTitle; 
    public String DisplayTitle 
    { 
     get 
     { 
      return _displayTitle; 
     } 
     set 
     { 
      if (value.Equals(_displayTitle)) return; 
      _displayTitle = value; 
      NotifyOfPropertyChange(() => DisplayName); 
     } 
    } 

Sonra ShellViewModel yapıcı içinde ayarlayın: iş gibi görünüyor

DisplayTitle = "FBA Gold Evaluator"; 

.

+0

Cevabınızı, setter ;-)'deki boş referans istisnasını önlemek için küçük bir düzeltme ekleyerek düzenledim. "DisplayName" ayarının çalışmadığından emin misiniz? Başlığı önce XAML'den kaldırdınız mı? –

+0

Haklısınız! Başlığı XAML'den kaldırma ve ModelName yapıcısında DisplayName = "Yeni Başlık" ayarını kullanmak harika çalışıyor. Bunu çok özledim. XAML, WPF, MVVM ve Caliburn öğrenmeye çalışıyorum.Mikro aynı zamanda kötü bir fikir. Üzgünüm silahı atladım. Cevabınız olarak nasıl giriş yapacağımı tekrar işaretleyebilirim? Teşekkürler. –

+0

Sadece senin cevabını kontrol ettin. Tekrar teşekkürler. –