我面临一个非常不寻常的问题,我有一个UserControl,它显示ChildWindow对这个ChildWindow执行一些操作,我完成我的操作后关闭它,然后(再次)打开它,它工作正常,但是很快当我关闭这个ChildWindow时,UserControl将被禁用。
对于我的应用程序中的所有ChildWindows都会发生这种情况,例如,如果我打开(比方说)ChildWindow01然后关闭它然后打开ChildWindow02并关闭它,则基本UserControl将被禁用。
它是一个MVVM应用程序但是我从UserControl.xaml.cs打开这些ChildWindows,点击按钮事件。
P.S。我正在为我的应用程序使用Galasoft MVVM框架。
请建议。
修改
UserControl XAML
<StackPanel Style="{StaticResource QuizEditorStackPanelStyle}">
<HyperlinkButton x:Name="lnkSetting" Content="Settings"
Command="{Binding QuizSettingCommand}" CommandParameter="{Binding SettingId}"/>
</StackPanel>
调用ViewModel - &gt; RelayCommand,用于打开子窗口(VM中的私有属性)
private ChildWindow QuizSettingWindow {
get {
return new QuizSetting(this.QuizSettingId);
}
}
子窗口打开
private void OpenQuizSettingScreen(long quizSettingId) {
this.QuizS ettingWindow.Show();
}
儿童窗口关闭自我的按钮事件
答案 0 :(得分:0)
在关闭子窗口时,您是否取消订阅结束事件?不确定这可能是你的问题的原因。尝试取消订阅子窗口的关闭事件。
答案 1 :(得分:0)
我在silverlight论坛上找到this thread,我也有这个问题。该线程解释了您的问题并为其提供了临时修复。这个修复对我有用。
如果你打电话
Application.Current.RootVisual.SetValue(Control.IsEnabledProperty, True);
关闭窗口后,将始终启用父级。这个修复对我有用,我希望它对你也有用。
但是如果在你的情况下只有一个用户控件阻止(而不是整个应用程序)那么你可能想要调用像
这样的东西this.SetValue(Control.IsEnabledProperty, True);
或者,如果您从子窗口中订阅了close事件(如果您扩展它),那么您可以考虑调用:
this.Parent.SetValue(Control.IsEnabledProperty, True);
我还没有测试过这些。但在我的情况下,第一个工作。我希望这一切都可以帮助你解决问题。