我对WPF和MVVM很陌生,我尝试使用所有标准WindowChrome
功能创建自定义Window
。我正在努力应对最大化/最小化窗口Button
内容:我想要在用户双击WindowChrome
栏时更改内容,以便显示正确的图标:
当我双击该栏时,结果应为:
我设法使用按钮Triggers
更改了内容,但是如何在发生其他控制事件时更改内容?
提前感谢您的帮助!
答案 0 :(得分:1)
为按钮指定一个带有触发器的样式,该触发器根据Window.WindowState
的值设置内容。这不是一个事件。该按钮反映窗口的当前状态。
<Style TargetType="Button">
<Style.Triggers>
<DataTrigger
Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType=Window}}"
Value="Maximized">
<Setter Property="Content">
<Setter.Value>
<!-- I don't know if you're using a Path or what -->
<Path Stroke="White" Data="..." />
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger
Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType=Window}}"
Value="Normal">
<Setter Property="Content">
<Setter.Value>
<!-- I don't know if you're using a Path or what -->
<Path Stroke="White" Data="..." />
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
设置按钮的模板会更明智,因为每个路径只有一个副本,如果您重复使用该样式两次,则无法共享它们。
如果有一些原因导致您无法使用您的代码,请告诉我您的代码。