【问题标题】:WPF,MVVM Binding ViewModel-Property to nested UserControlWPF,MVVM 将 ViewModel-Property 绑定到嵌套的 UserControl
【发布时间】:2013-08-23 08:25:28
【问题描述】:

我有 2 个名为“MyTree”和“MyGrid”的用户控件。 我有另一个名为“Content”的用户控件,其中有一个“MyTree”和“MyGrid”。 我有一个带有选项卡控件的窗口。 每个选项卡项都包含“内容”。选项卡项是动态添加的。 那么,当我动态创建选项卡项目时,如何将项目添加到“MyGrid”。 我使用 MVVM 模式和 INotifyPropertyChanged 事件 我将项目源设置为某个属性。

现在我的“ContainerPanelViewModel”有

private string pro11 ;
        public event PropertyChangedEventHandler PropertyChanged;
        public void OnPropertyChanged(PropertyChangedEventArgs e)
        {
            if (PropertyChanged != null)
            {
                MessageBox.Show("Enterd loop");
                PropertyChanged(this, e);
            }
        }
        public string pro1
        {
            get
            { 
                return pro11; 
            }
            set 
            {
                if (pro11 != value)
                {
                    pro11 = value;
                    OnPropertyChanged(new PropertyChangedEventArgs("pro1"));
                }

            }
        }

我有另一个视图模型,它有一个

ObservableCollection<ContainerPanelViewModel> RootNodeTabCollection

我正在添加

 RootNodeTabCollection[0].pro1 = "abc";

但是标签内容没有更新

if (PropertyChanged != null)

总是假的..并且不进入循环。 任何时候都不会显示消息框

【问题讨论】:

  • 贴一些代码,很难想象你在描述什么。
  • 由于一些安全问题,我无法显示代码。

标签: wpf binding inotifypropertychanged


【解决方案1】:

您可能有一个 ViewModel 集合,其中每个 ViewModel 都是某个 Tab 的 DataContext。然后这个 ViewModel 应该有另一个集合,可以用作您的 Grid 或 Tree 的 DataContext。

【讨论】:

  • 好的..感谢您的提示...我错误地保留了视图集合而不是视图模型..我希望这能解决我的问题..谢谢你们俩
  • 在这样做之后我得到了一些其他的错误....从另一个视图模型设置视图模型的属性后,我的“PropertyChanged!= null”始终为 NULL..所以 UI 没有更新。 .可能是什么原因?
  • 对不起,我听不懂你想说什么。你能在这里写一个例子吗?
【解决方案2】:

如果PropertyChanged 为空,则意味着没有任何东西绑定到视图模型。在 XAML 中,您需要使用 {Binding ...} 语法将属性绑定到视图模型的实例,以便在更新视图模型上的属性时发生任何事情。

您可能已经有一些绑定,但您可以调试这些绑定以了解有关绑定失败原因的更多信息。有几种方法可以做到这一点,但一种方法是将PresentationTraceSources.TraceLevel=High 添加到绑定中。例如:

ItemsSource="{Binding Items, PresentationTraceSources.TraceLevel=High}"

然后,WPF 会将该特定绑定的绑定跟踪信息写入调试窗口。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多