#.net #vb.net #winforms #data-binding
Вопрос:
Я не могу обновить свое пользовательское свойство UserControl при изменении связанного источника — у меня есть несколько вложенных элементов управления пользователями: «DetailView», содержащий «SubDetailView».
.. с моим подробным представлением, содержащим представление DataGrid, и я хочу, чтобы в представлении subdetail отображались некоторые данные в зависимости от выбранного элемента в представлении DataGrid.
Я попробовал следующее; это мой подробный обзор:
Public Class DetailView Inherits IPropertyChanged Private _selectedVehicle As Vehicle ' This is the property which is updated when the selection in the DataGridView changes Public Property SelectedVehicle As Vehicle Get Return _selectedVehicle End Get Set(value As Vehicle) _selectedVehicle = value ' Raising PropertyChanged for color when my vehicle changes, as it depends on it OnPropertyChanged(NameOf(Color)) End Set End Property Public ReadOnly Property Color As Color Get Return SelectedVehicle?.Color End Get End Property Public Sub New() InitializeComponent() ' My Color-Property is bound to the Color-Property of my SubDetailView Me.MySubDetailView.DataBindings.Add("Color", Me, NameOf(Color)) End Sub Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged Private Sub OnPropertyChanged(lt;CallerMemberNamegt; Optional propertyName As String = "") RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName) End Sub End Class
И мой поддетальный вид
Public Class SubDetailView Private _color As Color ' Color property is not updated when the Vehicle property of my DetailView changes Public Property Color As Color Get Return _color End Get Set(value As Color) _color = value End Set End Property End Class
Я бы ожидал, что мой установщик свойств будет иметь SubDetailView.Цвет вызывается при изменении DetailView.Vehicle или я что-то не так понял?