无法在WPF用户控件中绑定DataGrid的ItemsSource

时间:2016-08-22 16:30:57

标签: wpf vb.net binding user-controls dependency-properties

我正在设计一个包含数据网格的UserControl。尽管我尽最大努力将数据绑定到ItemsSource,但数据网格并未显示任何行。

以下是绑定的基本流程:

  1. 包含UserControl的窗口。
  2. window viewmodel包含为用户控件设计的viewmodel实例。
  3. 我通过依赖属性将UserControl的ViewModel绑定到此viewmodel。
  4. 然后将数据网格绑定到视图模型中的可观察集合,但没有显示任何内容。
  5. 代码(Xaml和VB.Net):

    窗口视图模型,绑定到所有窗口控件:

    Public Class WindowVM
        ...
        Public Property UserControlViewModel as New UserControlVM
    End Class
    

    Window Xaml:

       <local:MyUserControl ViewModel="{Binding UserControlViewModel, Mode=OneWay}"/>
    

    用户控制代码:

    Public Shared ReadOnly ViewModelProperty As DependencyProperty = DependencyProperty.Register("ViewModel", GetType(UserControlVM), GetType(MyUserControl), New PropertyMetadata(Nothing))
    ...
     Public Property ViewModel As UserControlVM
        Get
            Return CType(Me.GetValue(ViewModelProperty), UserControlVM)
        End Get
        Set(value As UserControlVM)
            Me.SetValue(ViewModelProperty, value)
        End Set
    End Property
    ....
    Public Class UserControlVM
        Public Property RunItems As New ObservableCollection(Of RunVM)
    End Class
    

    用户控制xaml,datagrid绑定:

    <DataGrid DataContext="{Binding ViewModel}"
      ItemsSource="{Binding RunItems}" ...
    

    似乎有很多步骤,但据我所知,这是正确的MVVM方式,可以将绑定绑定到DataGrid。到目前为止,没有。

1 个答案:

答案 0 :(得分:0)

看起来我可能已经解决了它。 DataGrid的{​​{1}}需要指向DataContext

只是一个简单的疏忽:

UserControl