我有两个Window。我想打开一个,然后隐藏/关闭当前的。
GlowBrush="{DynamicResource AccentColorBrush}"
WindowStartupLocation="CenterScreen" Visibility="{Binding WindowVisible, Converter={StaticResource BooleanToVisibilityConverter}}">
ViewModel:
var taskViewModel = new EmployeViewModel(Convert.ToInt32(userId));
Window2 X = new Window2(taskViewModel);
WindowVisible = false;
X.Show();
private bool _windowVisible;
public bool WindowVisible
{
get { return _windowVisible; }
set
{
_windowVisible = value;
NotifyOfPropertyChange("WindowVisible");
}
}
第二个窗口正在打开,但第一个窗口什么也没有发生。
答案 0 :(得分:0)
将您的XAML更改为此
GlowBrush="{DynamicResource AccentColorBrush}"
WindowStartupLocation="CenterScreen" >
<Window.Resources>
<!--YOUR CONVERTER -->
</Window.Resources>
<Window.Visibility>
<Binding Path="WindowVisible" Converter="{StaticResource BooleanToVisibilityConverter}" />
</Window.Visibility>
如果仍然无法正常工作,请在WindowVisible
吸气剂上设置一个断点,并观察转换器是否正在尝试获取它。
我刚刚尝试了一下,它奏效了,所以让我知道是否不适合你
答案 1 :(得分:0)
这是我重写窗口内容的方法。
ContentOverride.OverRideContent<WindowtobeHide>(userControl);
public static class ContentOverride
{
public static void OverRideContent<T>(UserControl objMain)
{
foreach (Window window in Application.Current.Windows)
{
if (window.GetType() == typeof(T))
{
window.Content = objMain;
window.Activate();
}
}
}
}
您可以使用
window.Visibility = Visibility.Hidden;
隐藏而不是像我正在做的那样替换内容
答案 2 :(得分:-1)
您可以写一个InverseBooleanToVisibilityConverter
。