我可以使用等交互触发器关闭窗口
<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
属性可以设置为最小化或最大化。。
- 单击按钮时可以显式更改
void Button_OnClick(object sender, RoutedEventArgs e)
{
this.WindowState = Maximize;
}
- 或者您可以定义自己的具有
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>