【问题标题】:replace user control in grid替换网格中的用户控件
【发布时间】:2013-09-09 03:17:19
【问题描述】:

我的 xaml 看起来像这样:

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

Control1Visibility 和 Control2Visibility 是我的 ViewModel 中的属性,但它不起作用。此网格无法动态显示两个用户控件。有人有想法吗?

编辑

虚拟机:

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");
                }
            }
        }

【问题讨论】:

  • 什么不起作用?您最初是否看到其中任何一个控件?您能否也发布您的 ViewModel 代码?
  • 你能分享你的VM代码吗?以及您如何为您的视图设置 DataContext?
  • @Andrew,@nit,我已经附加了我的视图模型,当应用程序运行时,usercontrol1 无法显示。我有一个按钮可以切换它们的可见性,但不起作用。
  • nit 提出了一个很好的问题 - 如何在网格上设置 DataContext?
  • 在我的视图后面的代码中:this.DataContext = MainViewModel.Instance;

标签: wpf xaml mvvm user-controls


【解决方案1】:

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

【讨论】:

  • 同样对于 Usercontrol1,您在设置 userControl1 时返回 advancedSearchViewVisibility...
  • 对不起@Andrew 和 nit,我输入了错误的代码,名称是正确的,请查看我的编辑代码。
  • 您的 xaml 仍然显示 Control1Visibility 和 Control2Visibility。您还可以检查输出窗口是否报告任何绑定错误?
  • :(绑定没有错误,ok,又错了!xaml中的Binding与viewmodel中的属性同名
  • 好的.. 还有一个问题?你是如何更新属性值的,当你显示你的视图时,UserControl2 是否折叠了?
猜你喜欢
  • 1970-01-01
  • 2010-10-10
  • 1970-01-01
  • 1970-01-01
  • 2010-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多