我有一个带有菜单的Catel.Window作为MainWindow,主要内容是:
<ContentControl Content="{Binding ActualVM, Converter={catel:ViewModelToViewConverter}}" />
在MainWindowViewModel中:
public ViewModelBase ActualVM { get; set; }
MainWindowViewModel在菜单命令的OnExecute方法中设置ActualVM。它工作正常。我希望能够将实际视图分离到新窗口。在一个视图后面的代码中,我将以下内容用于按钮的单击:
protected void DetachClick(object obj, RoutedEventArgs e)
{
ContentPresenter vp = this.GetVisualParent() as ContentPresenter;
if (vp != null)
{
vp.Content = null;
var dw = new DetachWindow();
dw.Content = this;
dw.Show();
}
}
DetachWindow是一个&#34;空&#34; Catel.Window用&#34;空&#34;视图模型。 它也工作正常,view和viewmodell在分离的窗口中运行,但是如果我点击其中一个MainWindows的菜单项,MainWindowViewModel会设置ActualVM,但是MainWindows不会像之前那样显示视图。分离
答案 0 :(得分:1)
原因是您在使用此代码时正在终止绑定:
vp.Content = null;
您应该将VM上的值设置为null,以便正确更新绑定,而不是使用新值替换绑定。
您可以尝试的另一个选择是使用SetCurrentValue
代替.Content = null
。