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

elcex8rz  于 2022-11-18  发布在  C#
关注(0)|答案(1)|浏览(344)

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

<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实现这一点?

vwhgwdsa

vwhgwdsa1#

MethodName="Close"可以工作,因为Window类型中有Close()方法,但没有Maximize()Minimize()方法,这些是状态,有WindowState属性,您可以将其设置为Minimize或Maximize。
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;
    }
}

在.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>

相关问题