MahAppsのMetroWindowでアプリを作っていて、突然MetroWindowのデザインが崩れることがあったので、その対処方法です。
2017/04/16 追記
この問題はMahApps.Metro v1.6以降は解決しています。
前置き
MahAppsとMaterial Design In XAML ToolkitはWPFで簡単に見た目をカッコ良くするライブラリです。
上記2つの基本的な説明は
Material Design In XAML Toolkitでお手軽にWPFアプリを美しく
WPF 「MahApps.Metro」を使ってWPFアプリケーションをModernUIにしてみる
等をご参考にしてください。
問題発生
MetroWindowを継承して作ったMainWindowにBehaviorを加えると、デザインが崩れてしまいます。
MetroWindowの一番の特徴のWindowのタイトルバーが2重になってしまっています。
下記コードのBehavior部分を入れると問題が発生します。
Behaviorの中身はなんでもいいです。
<mahApps:MetroWindow
x:Class="MetroErrorTest.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:mahApps="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
Title="MetroWindow"
Width="300" Height="200">
<!-- 何かBehaviorを足すとデザインが崩れる -->
<i:Interaction.Behaviors>
<ei:DataStateBehavior />
</i:Interaction.Behaviors>
<Grid>
<Button Content="Button1" />
</Grid>
</mahApps:MetroWindow>
対処方法
https://github.com/MahApps/MahApps.Metro/issues/1760
によると、MetroWindowで元々定義されていたBehaviorが上書きされてしまうことが原因のようだ。
というわけで、以下の通りに変更。
これで最初と同じ状態に戻った。
<mahApps:MetroWindow
x:Class="MetroErrorTest.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Behaviours="http://metro.mahapps.com/winfx/xaml/shared"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:mahApps="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
Title="MetroWindow"
Width="300"
Height="200">
<!-- MetroWindowのBehaviorを加えるとデザインが崩れない -->
<i:Interaction.Behaviors>
<ei:DataStateBehavior />
<Behaviours:BorderlessWindowBehavior />
<Behaviours:WindowsSettingBehaviour />
<Behaviours:GlowWindowBehavior />
</i:Interaction.Behaviors>
<Grid>
<Button Content="Button1" />
</Grid>
</mahApps:MetroWindow>
環境
VisualStudio2017
.NET Framework 4.6
C#6
Material Design In XAML Toolkit 2.3.0.823
MahApps.Metro 1.5