MetroWindow에 Behavior를 추가하면 붕괴

5362 단어 XamlC#.NETWPF
MahApps의 MetroWindow로 앱을 만들고 갑자기 MetroWindow의 디자인이 무너질 수 있었기 때문에 그 해결책입니다.

2017/04/16 추가
이 문제는 MahApps.Metro v1.6 이상에서 해결되었습니다.

전치



MahApps와 Material Design In XAML Toolkit은 WPF에서 쉽게 외형을 멋지게 만드는 라이브러리입니다.
위의 두 가지 기본 설명은
Material Design In XAML Toolkit로 손쉽게 WPF 앱을 아름답게
WPF "MahApps.Metro"를 사용하여 WPF 응용 프로그램을 ModernUI로 시도
등을 참고하십시오.

문제 발생



MetroWindow를 상속하여 만든 MainWindow에 Behavior를 추가하면 디자인이 무너져 버립니다.





MetroWindow의 제일 특징인 Window의 타이틀 바가 2중이 되어 버리고 있습니다.

아래 코드의 Behavior 부분을 넣으면 문제가 발생합니다.
Behavior의 내용은 무엇이든 좋습니다.

MainWindow.xaml
<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>

해결 방법



htps : // 기주 b. 코 m / 마하 ps / 마하 ps. 메 t로 / 이스에 s / 1760
에 따르면 MetroWindow에서 원래 정의되었던 Behavior가 덮어쓰여져 버리는 것이 원인인 것 같다.
그래서 다음과 같이 변경.
이제 처음과 같은 상태로 돌아갔다.

MainWindow.xaml
<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

좋은 웹페이지 즐겨찾기