Wpf 在网格中替换用户控件

Wpf 在网格中替换用户控件,wpf,xaml,mvvm,user-controls,Wpf,Xaml,Mvvm,User Controls,我的xaml如下所示: <UserControl> <Grid> ... <Grid> ... <Grid Grid.Row="3"> <local:UserControl1 Visibility = "{Binding UserControl1Visibility}" /> <local:UserControl2 Visibility = "{Bin

我的xaml如下所示:

<UserControl>
    <Grid>
        ...
    <Grid>
    ...
    <Grid Grid.Row="3">
        <local:UserControl1 Visibility = "{Binding UserControl1Visibility}" />
        <local:UserControl2 Visibility = "{Binding UserControl2Visibility}" />
    </Grid>
</UserControl>

名称有误-在xaml中,您称它们为Control1Visibility和Control2Visibility,但在ViewModel中,您称它们为UserControl1Visibility和UserControl2Visibility。更改其中一个名称,并确保使用适当的字符串引发PropertyChanged事件。

什么不起作用?您最初是否看到这两个控件中的任何一个?您可以发布您的ViewModel代码吗?您可以共享您的VM代码吗?您如何设置视图的DataContext?@Andrew,@nit,我已经附加了我的viewmodel,当应用程序运行时,usercontrol1无法显示。我有一个按钮来切换它们的可见性,但不起作用。我问了一个好问题-如何在网格上设置DataContext?在我的视图的代码中:this.DataContext=MainViewModel.Instance;同样对于Usercontrol1,您在设置Usercontrol1时返回advancedSearchViewVisibility…抱歉@Andrew and nit,我输入了错误的代码,名称是正确的,请查看我编辑的代码。您的xaml仍然显示Control1Visibility和Control2Visibility。您还可以检查输出窗口是否报告了任何绑定错误吗?:(绑定没有错误,好吧,又错了!xaml中的绑定与viewmodelok中的属性同名。还有一个问题?当您显示视图时,您是如何更新属性值的?UserControl2是否初始折叠?
private Visibility userControl1Visibility = Visibility.Visible;

        public Visibility UserControl1Visibility
        {
            get { return userControl1Visibility; }
            set
            {
                if (userControl1Visibility != value)
                {
                    userControl1Visibility = value;
                    RaisePropertyChanged("UserControl1Visibility");
                }
            }
        }


        private Visibility userControl2Visibility = Visibility.Collapsed;

        public Visibility UserControl2Visibility
        {
            get { return userControl2Visibility ; }
            set
            {
                if (userControl2Visibility != value)
                {
                    userControl2Visibility = value;
                    RaisePropertyChanged("UserControl2Visibility");
                }
            }
        }