我有一个Popup
和一个ToggleButton
。我设置了这样的绑定:
<ToggleButton x:Name="myToggle" Content="{Binding MyData.Title}" />
<Popup IsOpen="{Binding IsChecked, ElementName=myToggle}" >
<TextBlock Text="{Binding MyData.Details}" />
</Popup>
如您所见,我将切换按钮的内容绑定到MyData.Title
,将弹出窗口的内容绑定到MyData.Details
。
现在我有了条件MyData.ShowDetails
。如果是true
,则弹出窗口可以打开;如果是false
,则不应打开弹出窗口。
如何设置绑定来实现此目的?
我在Popup
上测试了这些绑定,但没有一个起作用:
Visibility="{Binding MyData.ShowDetails, Converter={StaticResource BooleanToVisibilityConverter}}"
IsEnable="{Binding MyData.ShowDetails}"
答案 0 :(得分:1)
在我的案件中,我找到了一个特殊的答案。我应该禁用Popup
而不是禁用ToggleButton
:
<ToggleButton x:Name="myToggle" Content="{Binding MyData.Title}"
IsEnabled="{Binding MyData.ShowDetails}"/>
<Popup IsOpen="{Binding IsChecked, ElementName=myToggle}" >
<TextBlock Text="{Binding MyData.Details}" />
</Popup>
效果很好!
注意:这不是Popup
的一般答案。欢迎任何有答案的人。
答案 1 :(得分:1)
您可以在窗口中所有内容的顶部放置一个面板(网格)。
这需要设置背景,但是如果您仍然想查看窗口内容,它的透明度可能会很低。
仅在显示弹出窗口时使其可见,否则折叠。
确保将焦点设置在显示的弹出窗口上。
。
记住。
弹出窗口是单独的窗口。
旨在简要展示它们,如果长时间显示它们,则存在许多潜在的缺点。 EG其他应用程序可能会显示在其下方,并且它们不会随其“父”窗口/控件一起移动。
根据您的确切要求,您可能会发现模态窗口更容易且更适合。
只需实例化一个窗口并使用
PopupWindow newWindow = new PopupWindow();
newWindow.ShowDialog();
PopupWindow只是样式看起来像您想要弹出窗口的任何旧窗口。
这将确保用户无法以某种方式与您应用中的任何其他窗口进行交互。
。
另一种可能性是在主窗口内所有内容之上的网格中显示“弹出”内容。
这就是编辑数据的方式:
https://gallery.technet.microsoft.com/scriptcenter/WPF-Entity-Framework-MVVM-78cdc204
该方法的优缺点是它在一个窗口中。 --- Brian Kress ---