C# 通过在WPF中单击按钮控制弹出窗口的打开和关闭
我的要求是通过按钮控制弹出窗口的关闭/打开。在我下面的代码中,单击按钮弹出窗口会打开,但下次单击时不会关闭 XAMLC# 通过在WPF中单击按钮控制弹出窗口的打开和关闭,c#,.net,wpf,popup,C#,.net,Wpf,Popup,我的要求是通过按钮控制弹出窗口的关闭/打开。在我下面的代码中,单击按钮弹出窗口会打开,但下次单击时不会关闭 XAML 注意:我可以使用切换按钮实现上述情况,但我的要求仅限于按钮。如果不切换,则无法完成此操作,也就是说,按钮本身无法完成此操作。您正在处理一个状态为“打开”和“关闭”的控件。你需要知道当前的状态。要实现此目的,请向宿主控件添加标志(需要代码隐藏),或使用弹出窗口的标志(需要代码隐藏),或使用切换按钮的标志(无代码隐藏) 避免使用切换按钮是没有任何意义的:它是一个额外知道或具有状态
注意:我可以使用切换按钮实现上述情况,但我的要求仅限于按钮。如果不切换,则无法完成此操作,也就是说,
按钮本身无法完成此操作。您正在处理一个状态为“打开”和“关闭”的控件。你需要知道当前的状态。要实现此目的,请向宿主控件添加标志(需要代码隐藏),或使用弹出窗口的标志(需要代码隐藏),或使用切换按钮的标志(无代码隐藏)
避免使用切换按钮是没有任何意义的:它是一个额外知道或具有状态的按钮。它可以处理ICommand
或发出单击事件-它是一个按钮
。这正是你需要的
您不必在按钮的内容中明确添加TextBlock
。将字符串指定给按钮.Content
时,控件将自动创建文本块来显示该字符串
main window.xaml
<Button Click="TogglePopup_OnClick"
Content="Show Popup" />
<Popup x:Name="Popup" />
我不知道如何交替不同的动画,但你可以有两个按钮:一个打开(可见)和另一个关闭(隐藏)。除了更改Popup.IsOpen之外,他们还需要更改自己和对方按钮的可见性。
<Button Click="TogglePopup_OnClick"
Content="Show Popup" />
<Popup x:Name="Popup" />
private void TogglePopup_OnClick(object sender, EventArgs e)
=> this.Popup.IsOpen ^= true;