2015-07-21 14 views
5

tôi đang làm như vậy:Không có khả năng thay đổi Tiêu đề trong một Caliburn.Micro Conductor Xem bằng 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"> 

Cái này là đây là cùng một lúc một dây dẫn chính xác định trên chính cửa sổ mà tôi kiểm soát điều hướng thông qua các cửa sổ khác, vì vậy tôi không thể kế thừa từ MetroWindow để ít nhất là cố gắng thay đổi tiêu đề trong ViewModel:

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()); 
    } 
} 

Làm cách nào để thay đổi tiêu đề?

Trả lời

2

Khi sử dụng mẫu MVVM, bạn không bao giờ nên cố gắng đặt bất kỳ thứ gì trên chế độ xem trực tiếp trong kiểu xem như thế này. Thay vào đó sử dụng dữ liệu ràng buộc để thực hiện điều này.

Vì vậy, bạn sẽ có một tài sản trên ShellViewModel của bạn với một cái gì đó như:

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

và trong XAML cửa sổ của bạn nó sẽ là một cái gì đó như:

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

Thừa hưởng từ MetroWindow và cài đặt mà isn tài sản Tiêu đề 'những gì bạn muốn làm. Ngay cả khi bạn đã thay đổi thừa kế, nó sẽ không cho phép bạn thay đổi Tiêu đề của khung nhìn từ mô hình khung nhìn theo cách này. ShellView và ShellViewModel sẽ chỉ là 2 trường hợp khác nhau của MetroWindow. Nếu bạn muốn đặt tiêu đề thực hiện những gì tôi đã mô tả và chỉ cần đặt thuộc tính MyTitle trong mô hình chế độ xem thành giá trị bạn muốn. – TylerReid

Các vấn đề liên quan