【发布时间】:2014-01-14 22:39:35
【问题描述】:
我在 UserControl 中有一个 ComboBox。我在带有 DataGrid 的窗口中使用 UserControl:UserControl DataContext 是 DataGrid SelectedItem。 UserControl 内部的 ComboBox 通过 SelectedValue 属性绑定到 SelectedItem 的“ID”字段。为了实现这一点,我像这样在 UserControl 中编写了一个 DependencyProperty
Public Shared SelectedValueProperty As DependencyProperty = _
DependencyProperty.Register("SelectedValue", GetType(Object), GetType(ucEditCombo))
Public Property SelectedValue() As Object
Get
Return CType(GetValue(SelectedValueProperty), Object)
End Get
Set(ByVal value As Object)
SetCurrentValue(SelectedValueProperty, value)
End Set
End Property
并将 ComboBox SelectedValue 属性绑定到 XAML 中的 UserControl SelectedValue 属性:
<ComboBox SelectedValuePath="{Binding ElementName=EditCombo,Path=SelectedValuePath}"
DisplayMemberPath="{Binding ElementName=EditCombo,Path=DisplayMemberPath}"
ItemsSource="{Binding ElementName=EditCombo,Path=ItemsSource}"
SelectedValue="{Binding ElementName=EditCombo,Path=SelectedValue,Mode=TwoWay}"
Visibility="{Binding ElementName=EditCombo,Path=ComboVisibility}"
Name="cmb"/>
(EditCombo 是我在 XAML 中给 UserControl 的 x:Name)。
运行应用程序我不是以下内容:
- 如果我更改 DataGrid 选择,则 ComboBox 显示的值会正确更改。
- 只要我直接在控件上更改 ComboBox 选定值,DataGrid 中的值就不会更新,并且 ComboBox 不再绑定到 DataGrid SelectedItem。
【问题讨论】:
标签: wpf data-binding user-controls