2015-07-21 23 views
5

kullanarak Caliburn.Micro İletken görünümünde Başlık değiştirmek mümkün değil:Ben şöyle yapıyorum MahApps MetroWindow

<Controls:MetroWindow x:Class="BS.Expert.Client.App.Views.ShellView" 
    xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    ShowTitleBar="True" 
    Title="My Title"> 

şey bu ana üzerinde tanımlanmış bir ana iletken aynı anda olmasıdır

public class ShellViewModel : Conductor<IScreen>.Collection.OneActive, IShell 
{ 
    public ShellViewModel() 
    { 
     #region mahApps Theme Loading 

     var theme = ThemeManager.DetectAppStyle(Application.Current); 
     var appTheme = ThemeManager.GetAppTheme(App.Configuration.Theme); 
     ThemeManager.ChangeAppStyle(Application.Current, theme.Item2, appTheme); 

     #endregion 
     //TODO: Changing Title here is not possible ((MetroWindow)this).Title = "No way"; 
     // Tudo bem na seguinte liña 
     LocalizeDictionary.Instance.Culture = new System.Globalization.CultureInfo("pt-BR"); 
     ShowPageOne(); 
    } 

    public void ShowPageOne() 
    { 
     ActivateItem(new PageOneViewModel()); 
    } 
} 

nasıl başlığını değiştirmek gerekir: Ben başka pencerelerden gezinmeyi denetler, bu yüzden MetroWindow devralan mümkün değilim hangi pencere en azından ViewModel başlığı değiştirmek çalışıyor mu?

cevap

2

MVVM desenini kullanırken, görünüm modelinde doğrudan görünümünde hiçbir şey ayarlamaya çalışmamalısınız. Bunun yerine bunu gerçekleştirmek için veri bağlamayı kullanmak. gibi bir şey olurdu

public string MyTitle 
{ 
    get { return _myTitle; } 
    set 
    { 
     _myTitle = value; 
     //Insert your property change code here (not sure of the caliburn micro version) 
    } 
} 

ve pencere xaml:

Yani böyle bir şey ile ShellViewModel bir özelliği olurdu MetroWindow Miras ve ayar

<Controls:MetroWindow 
    Title="{Binding MyTitle}" 
    xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro" 
    ... 
    > 
+1

olduğunu Başlık mülkiyet değil mi Ne yapmak istiyorsan yap. Mirasını değiştirmiş olsanız bile, görünüm modelinden görünümün Başlığını bu şekilde değiştirmenize izin vermezsiniz. ShellView ve ShellViewModel sadece bir MetroWindow'un 2 farklı örneği olacaktı. Tanımladığım başlığı uygulamak ve görünüm modelinde MyTitle özelliğini istediğiniz değere ayarlamak isterseniz. – TylerReid

İlgili konular