【问题标题】:WPF Binding to a property of an usercontrolWPF 绑定到用户控件的属性
【发布时间】:2011-09-06 04:24:27
【问题描述】:

我有一个用户控件,它有一个属性Results。这个用户控件应该显示这个 ObservableCollection。我认为用户控件的 XAML 代码无关紧要。代码隐藏看起来像这样:

Public Property Results() As ObservableCollection(Of ResultModel)
    Get
        Return GetValue(ResultsProperty)
    End Get

    Set(ByVal value As ObservableCollection(Of ResultModel))
        SetValue(ResultsProperty, value)
    End Set
End Property

Public Shared ReadOnly ResultsProperty As DependencyProperty = _
                       DependencyProperty.Register("Results", _
                       GetType(ObservableCollection(Of ResultModel)), GetType(ResourcesGridData), _
                       New FrameworkPropertyMetadata(Nothing))

在我的 MainView.xaml 中,我有以下 XAML 代码来显示用户控件:

<controls:ResourcesGridData Results="{Binding Path=ResultsToShow}" />

我想将 MainViewModel 的 ResultsToShow 属性绑定到 usercontrol 的属性。

但现在我收到以下错误:

System.Windows.Data.BindingExpression ist kein Wert des Typs ASSESS.Data.ResultModel und kann in dieser generischen Auflistung nicht verwendet werden。

我试着翻译一下:

System.Windows.Data.BindingExpression 不是 ASSESS.Data.ResultModel 类型的值,不能在此通用列表中使用。

【问题讨论】:

  • MainViewModel 是这个 UserControl (ResourcesGridData) 的 DataContext,还是实际上与主窗口/父控件相关联?
  • 评论对我帮助很大。不知道,MainView的DataContext自动是usercontrol的DataContext
  • 那么你的问题解决了吗? :)
  • 是的,感谢您的思考! :)
  • 请发布答案并接受以将此问题标记为已解决。 (还要弄个英文 Visual Studio,本地化软件很痛苦

标签: wpf user-controls wpf-controls binding


【解决方案1】:

好的,很简单。就我而言,我不需要用户控件代码隐藏中的任何属性。

在 MainView 中我只是这样写:

<controls:ResourcesGridData />

在用户控件中:

ItemsSource="{Binding ResultsToShow}"

我直接绑定到MainView的DataContext的Property。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-17
    相关资源
    最近更新 更多