【问题标题】:WPF MVVM UserControl DataBinding in XAML Not WorkingXAML中的WPF MVVM用户控件数据绑定不起作用
【发布时间】:2011-08-11 14:17:07
【问题描述】:

我有一个用户控件,其中 DataSource 是 ObservableCollection<string>。 如果我通过代码设置我的用户控件实例的数据源,它可以工作

Chapters.DataSource = vm.ChapterList;

但是尝试通过 ht xaml 绑定不起作用

<b:ChapterStack x:Name="Chapters" DataSource="{Binding ChapterList}"></b:ChapterStack>

窗口上的其他控件正在绑定到虚拟机并正常显示。

如何让我的用户控件通过 xaml 绑定?

谢谢?

【问题讨论】:

  • 它吃掉了我的 xaml:usercontrol x:Name="Chapters" DataSource="{Binding ChapterList}"
  • xaml 由编辑器添加,谢谢
  • 您是否将视图的 DataContext 设置为 XAML 中视图模型的实例?
  • 为了使给定的 XAML 行正常工作,vm 需要作为 DataContext 存在。是吗?你有任何绑定错误吗?检查您的输出窗口。
  • this.DataContext = _vm; //来自后面的xaml代码

标签: wpf mvvm user-controls binding


【解决方案1】:

确保您将ChapterStack 控件的DataSource 属性定义为Dependency Property,否则您将无法绑定它。

【讨论】:

  • 是的,公共静态只读 DependencyProperty DataSourceProperty
  • 还有,public ObservableCollection DataSource { get { return (ObservableCollection)GetValue(DataSourceProperty); } set { SetValue(DataSourceProperty, value); } }
  • 尝试通过添加一个虚拟转换器并在其中设置一个断点来调试绑定。这会让你知道你得到了什么作为价值。这可能会有所帮助
  • @AbdouMoumen,找到了。我在控件 OnInitialized 事件上设置 DataSource = new ObservableCollection
  • @mike,如果你找到了解决方案,你应该回答你自己的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-15
  • 1970-01-01
  • 2011-02-09
  • 2016-08-29
相关资源
最近更新 更多