如何使用交互触发器最大化和最小化WPF窗口使用c#与mvvm模式



我可以使用等交互触发器关闭窗口

<Button Content="X" Height="20" Width="20">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:CallMethodAction MethodName="Close"
TargetObject="{Binding RelativeSource={RelativeSource
Mode=FindAncestor,
AncestorType=Window}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>

但是当我替换MethodName="时;关闭">MethodName=";最大化">MethodName=";最小化">要最大化或最小化窗口,它不起作用。

如何在不破坏mvvm模式的情况下使用.Net 4.5来完成此操作?

MethodName="Close"之所以有效,是因为Window类型中有Close()方法,但没有Maximize()Minimize()方法,这些都是状态,有WindowState属性可以设置为最小化或最大化。。

  1. 单击按钮时可以显式更改
void Button_OnClick(object sender, RoutedEventArgs e)
{
this.WindowState = Maximize;
}
  1. 或者您可以定义自己的具有Minimize()Maximize()方法的窗口
public class MyWindow : Window {
public void Maximize(){
this.WindowState = Maximize;
}

public void Minimize(){
this.WindowState = Minimize;
}
}

在.xml 中

<views:MyWindow [views namespace here]..
<!-- -->
<Button Content="X" Height="20" Width="20">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:CallMethodAction MethodName="Maximize"
TargetObject="{Binding RelativeSource={RelativeSource
Mode=FindAncestor,
AncestorType=MyWindow}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
<!-- -->
</Window>

最新更新