有没有一种方法可以让整个WPF窗口在点击按钮后变成惰性的?该窗口通过Window.ShowDialog()调用,使用后,该窗口不再需要交互,但我让它打开以提醒用户在TextBox、ListBox中的输入,并通过OxyPlot等方式给予视觉反馈。我让用户手动关闭窗口。一个解决方案是禁用所有按钮,但这是乏味的,它仍然离开文本框的功能。这不是最佳的,因为任何功能都会产生错误的印象,认为窗口除了看之外还有其他用途。最好每个控件都通过一个设置不起作用。
pprl5pva1#
我通过在WPF窗口代码后面放置一个名称,然后在相应的按钮单击时设置.IsEnabled为false来实现。所有的按钮、组合框、文本框,甚至OxyPlot在这一点上都变成了惰性的,大多数部分都变灰了。
bq8i3lrv2#
考虑在代码隐藏或视图模型中创建一个专用的布尔依赖属性,并将每个TextBox的IsEnabled绑定到该属性。
TextBox
IsEnabled
iklwldmw3#
一个选项是阻止输入到窗口中最底部的容器。这允许他们移动窗口或调整窗口大小,但他们不能与任何控件交互。以这种方式禁用窗口确实意味着没有控件看起来被禁用,这可能不是您想要的UX。
private bool _windowFrozen = false; public MyDialog() { pnlParent.PreviewKeyDown += PnlParent_PreviewKeyDown; pnlParent.PreviewMouseDown += PnlParent_PreviewMouseDown; } private void PnlParent_PreviewKeyDown(object sender, KeyEventArgs e) { e.Handled = _windowFrozen; } private void PnlParent_PreviewMouseDown(object sender, MouseButtonEventArgs e) { e.Handled = _windowFrozen; }
3条答案
按热度按时间pprl5pva1#
我通过在WPF窗口代码后面放置一个名称,然后在相应的按钮单击时设置.IsEnabled为false来实现。所有的按钮、组合框、文本框,甚至OxyPlot在这一点上都变成了惰性的,大多数部分都变灰了。
bq8i3lrv2#
考虑在代码隐藏或视图模型中创建一个专用的布尔依赖属性,并将每个
TextBox
的IsEnabled
绑定到该属性。iklwldmw3#
一个选项是阻止输入到窗口中最底部的容器。这允许他们移动窗口或调整窗口大小,但他们不能与任何控件交互。
以这种方式禁用窗口确实意味着没有控件看起来被禁用,这可能不是您想要的UX。