C# 如何禁用打开WPF弹出窗口

C# 如何禁用打开WPF弹出窗口,c#,wpf,xaml,popup,C#,Wpf,Xaml,Popup,我有一个弹出窗口和一个切换按钮。我设置了如下绑定: <ToggleButton x:Name="myToggle" Content="{Binding MyData.Title}" /> <Popup IsOpen="{Binding IsChecked, ElementName=myToggle}" > <TextBlock Text="{Binding MyData.Details}" /> </Popup> 我在我的案例中找到了一个特

我有一个
弹出窗口
和一个
切换按钮
。我设置了如下绑定:

<ToggleButton x:Name="myToggle" Content="{Binding MyData.Title}" />
<Popup IsOpen="{Binding IsChecked, ElementName=myToggle}" >
   <TextBlock Text="{Binding MyData.Details}" />
</Popup>

我在我的案例中找到了一个特别的答案。我应该禁用
切换按钮,而不是禁用
弹出窗口

<ToggleButton x:Name="myToggle" Content="{Binding MyData.Title}" 
              IsEnabled="{Binding MyData.ShowDetails}"/>
<Popup IsOpen="{Binding IsChecked, ElementName=myToggle}" >
   <TextBlock Text="{Binding MyData.Details}" />
</Popup>

它工作完美


注意:这不是
弹出窗口的一般答案。欢迎任何有答案的人。

我在我的案例中找到了一个特别的答案。我应该禁用
切换按钮,而不是禁用
弹出窗口

<ToggleButton x:Name="myToggle" Content="{Binding MyData.Title}" 
              IsEnabled="{Binding MyData.ShowDetails}"/>
<Popup IsOpen="{Binding IsChecked, ElementName=myToggle}" >
   <TextBlock Text="{Binding MyData.Details}" />
</Popup>

它工作完美

注意:这不是
弹出窗口的一般答案。欢迎任何有答案的人。

您可以在窗口中的所有内容上方放置一个面板(网格)

这需要有一个背景设置,但如果你仍然想看到窗口内容,它可以是低不透明度的

使其仅在弹出窗口显示时可见,否则折叠

确保在弹出窗口显示时将焦点设置为“焦点”

记住

弹出窗口是独立的窗口

它们的目的是简单地显示,如果您长时间显示它们,则会有许多潜在的缺点。例如,其他应用程序可能会出现在它们下面,它们不会随“父”窗口/控件一起移动

您可能会发现模式窗口更容易,更适合,具体取决于您的具体需求

只需实例化一个窗口并使用

PopupWindow newWindow = new PopupWindow();
newWindow.ShowDialog();
其中PopupWindow只是任何旧窗口的样式,看起来像您想要的弹出窗口

这将保证用户无法以某种方式与应用程序中的任何其他窗口进行交互

另一种可能是在网格中显示“弹出”内容,该网格显示在主窗口中所有内容的顶部

这就是在这种情况下编辑数据的工作原理:

这种方法的优点或缺点是它在一个窗口中。 -----

您可以在窗口中所有内容的顶部放置一个面板(网格)

这需要有一个背景设置,但如果你仍然想看到窗口内容,它可以是低不透明度的

使其仅在弹出窗口显示时可见,否则折叠

确保在弹出窗口显示时将焦点设置为“焦点”

记住

弹出窗口是独立的窗口

它们的目的是简单地显示,如果您长时间显示它们,则会有许多潜在的缺点。例如,其他应用程序可能会出现在它们下面,它们不会随“父”窗口/控件一起移动

您可能会发现模式窗口更容易,更适合,具体取决于您的具体需求

只需实例化一个窗口并使用

PopupWindow newWindow = new PopupWindow();
newWindow.ShowDialog();
其中PopupWindow只是任何旧窗口的样式,看起来像您想要的弹出窗口

这将保证用户无法以某种方式与应用程序中的任何其他窗口进行交互

另一种可能是在网格中显示“弹出”内容,该网格显示在主窗口中所有内容的顶部

这就是在这种情况下编辑数据的工作原理:

这种方法的优点或缺点是它在一个窗口中。 ------