【发布时间】:2020-04-27 12:58:14
【问题描述】:
我正在创建一个类,继承自 Window,它为 TitleBar 添加了一些额外的功能。
我尝试使用此 XAML 作为最小化、恢复/最大化和关闭按钮来重新创建 Windows 10 标题栏:
<Button x:Name="CloseButton"
Click="CloseButton_Click"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Content="" FontFamily="Segoe MDL2 Assets" FontSize="10" Padding="15,10" Background="Transparent" BorderBrush="Transparent" Foreground="White"
DockPanel.Dock="Right">
<Button.Style>
<Style TargetType="{x:Type Button}"/>
</Button.Style>
</Button>
<Button x:Name="MaximizeButton"
Click="MaximizeButton_Click"
DockPanel.Dock="Right"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontFamily="Segoe MDL2 Assets" FontSize="10" Padding="15,10" Background="Transparent" BorderBrush="Transparent" Foreground="White">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Button.Content" Value="" />
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}, Path=WindowState}" Value="Maximized">
<Setter Property="Button.Content" Value="" />
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:MainWindow}}, Path=WindowState}" Value="Normal">
<Setter Property="Button.Content" Value="" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
<Button x:Name="MinimizeButton"
Content=""
Click="MinimizeButton_Click"
DockPanel.Dock="Right"
HorizontalAlignment="Center"
VerticalAlignment="Center"
FontFamily="Segoe MDL2 Assets" FontSize="10" Padding="15,15,15,5" Background="Transparent" BorderBrush="Transparent" Foreground="White">
<Button.Style>
<Style TargetType="{x:Type Button}"/>
</Button.Style>
</Button>
问题是,虽然我的“最大化”按钮最初是这样正确显示的:
如果我点击它,它会变成这样:
这看起来像是一种无效字符?根据Segoe UI MDL2 icon guidelines,它是一个有效字符。
如果我再次单击它来恢复它,恢复工作正常,但图标保持不变并且不会变回正确的图像,这个:
我的Style 或DataTrigger 有问题吗?
你会注意到我已经尝试过 AncestorType={x:Type Window}} 和 AncestorType={x:Type local:MainWindow}},MainWindow 是我的班级,但这些都没有任何区别。
【问题讨论】:
-
为什么不直接删除第二个触发器?您只想显示不同的图标和触发器,当窗口为
Maximized时,不是吗? -
我添加了第二个触发器以试图让它正确恢复,但它没有工作 - 所以我在没有它的情况下尝试过它并且它具有相同的行为(即显示不正确的图像和不再最大化时未更正)。
-
恐怕您的问题无法重现。
-
啊,我意识到我在导致问题的
MaximizeButton_Click按钮中做了一些愚蠢的事情。