我可以使用互動觸發器關閉一個視窗,例如
<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="Maximize" 或 MethodName="Minimize" 替換MethodName = " Close "以最大化或最小化視窗時,它不起作用。
如何在不破壞 mvvm 模式的情況下使用 .Net 4.5 執行此操作?
uj5u.com熱心網友回復:
MethodName="Close"之所以有效,是因為型別中有Close()方法Window,但那里沒有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;
}
}
在 .xaml 中
<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>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/513559.html
