2015-05-22 1 views
1

Я пытаюсь создать пользовательское окно MahApps.Metro с каркасом оркестра.Пользовательское окно Orchestra.MahApps

Я скопировал currennt содержимое ShellWindow (оба вида + код позади) и создал мое собственное окно. Тогда в App.xaml.cs я использовал мое окно вместо ShellWindow так:

shellService.CreateWithSplash<MyShellWindowView>() 

И проблема в том, что это окно не правильно оформлены (например, свести к минимуму/макс/кнопки закрытия)

problem

Вот мое окно:

<orchestra:MetroDataWindow x:Class="CatelApp.Views.MyShellWindowView" 
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
         xmlns:catel="http://catel.codeplex.com" 
         xmlns:orchestra="https://github.com/orcomp/orchestra" 
         SaveWindowPosition="False" d:DesignHeight="696" d:DesignWidth="480" mc:Ignorable="d"> 

    <orchestra:MetroDataWindow.Resources> 
    <ResourceDictionary> 
     <Style TargetType="catel:TabControl" BasedOn="{StaticResource {x:Type TabControl}}" /> 
    </ResourceDictionary> 
    </orchestra:MetroDataWindow.Resources> 

    <Border x:Name="border" BorderThickness="1"> 
    <DockPanel LastChildFill="True" Margin="15, 5, 15, 5"> 

     <StatusBar x:Name="statusBar" DockPanel.Dock="Bottom"> 
     <orchestra:AnimatingTextBlock x:Name="statusTextBlock" HorizontalAlignment="Left" VerticalAlignment="Center"> 
      <orchestra:AnimatingTextBlock.ShowStoryboard> 
      <Storyboard> 
       <DoubleAnimation Storyboard.TargetProperty="Opacity" To="1.0" Duration="0:0:0.2"/> 
      </Storyboard> 
      </orchestra:AnimatingTextBlock.ShowStoryboard> 
      <orchestra:AnimatingTextBlock.HideStoryboard> 
      <Storyboard> 
       <DoubleAnimation Storyboard.TargetProperty="Opacity" To="0.0" Duration="0:0:0.2"/> 
      </Storyboard> 
      </orchestra:AnimatingTextBlock.HideStoryboard> 
     </orchestra:AnimatingTextBlock> 
     </StatusBar> 

     <ContentControl x:Name="contentControl" /> 
    </DockPanel> 
    </Border> 

</orchestra:MetroDataWindow> 

И код за

namespace CatelApp.Views 
{ 
    /// <summary> 
    /// Interaction logic for MyShellWindowViewModel.xaml 
    /// </summary> 
    public partial class MyShellWindowView : MetroDataWindow, IShell 
    { 
     #region Constructors 

     /// <summary> 
     /// Initializes a new instance of the <see cref="ShellWindow"/> class. 
     /// </summary> 
     public MyShellWindowView() 
     { 
      var serviceLocator = ServiceLocator.Default; 

      var themeService = serviceLocator.ResolveType<IThemeService>(); 
      ThemeHelper.EnsureApplicationThemes(GetType().Assembly, themeService.ShouldCreateStyleForwarders()); 

      MahAppsHelper.ApplyTheme(); 

      InitializeComponent(); 

      var accentColorBrush = ThemeHelper.GetAccentColorBrush(); 
      border.BorderBrush = accentColorBrush; 

      var statusService = serviceLocator.ResolveType<IStatusService>(); 
      statusService.Initialize(statusTextBlock); 

      var commandManager = serviceLocator.ResolveType<ICommandManager>(); 
      var flyoutService = serviceLocator.ResolveType<IFlyoutService>(); 
      var mahAppsService = serviceLocator.ResolveType<IMahAppsService>(); 

      serviceLocator.RegisterInstance<IAboutInfoService>(mahAppsService); 

      var flyouts = new FlyoutsControl(); 
      foreach (var flyout in flyoutService.GetFlyouts()) 
      { 
       flyouts.Items.Add(flyout); 
      } 

      Flyouts = flyouts; 

      var windowCommands = mahAppsService.GetRightWindowCommands(); 

      if (mahAppsService.GetAboutInfo() != null) 
      { 
//    var aboutWindowCommand = WindowCommandHelper.CreateWindowCommandButton("appbar_information", "about"); 

//    var aboutService = serviceLocator.ResolveType<IAboutService>(); 
//    commandManager.RegisterAction("Help.About", aboutService.ShowAbout); 
//    aboutWindowCommand.Command = commandManager.GetCommand("Help.About"); 

//    windowCommands.Items.Add(aboutWindowCommand); 
      } 

      RightWindowCommands = windowCommands; 

      var mainView = mahAppsService.GetMainView(); 
      contentControl.Content = mainView; 

      SetBinding(TitleProperty, new Binding("ViewModel.Title") {Source = mainView}); 
     } 

     #endregion 
    } 
} 

ответ

2

Включили ли вы темы MahApps в свои ресурсы приложения? Например, смотрите код ниже:

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="/Resources/Icons.xaml" /> 

    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> 
    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /> 
    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" /> 

    <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.AnimatedTabControl.xaml" /> 
</ResourceDictionary.MergedDictionaries> 

 Смежные вопросы

  • Нет связанных вопросов^_^