У меня есть следующий сценарий:
1 класс с именем «Widget» со свойствами: ID, код, описание
1 класс с именем «MyWidget» со свойством: m_Widget As Widget
1ComboBox
ComboBox имеет List (Of Widget), установленный в качестве ItemSource.
Я создаю экземпляр MyWidget с именем MyWidget1 и задаю значения свойств m_Widget, соответствующие одному изэлементы в «ComboBox List (Of Widget)».Затем я устанавливаю для DataContext ComboBox значение MyWidget1.Widget.
При изменении выбранного элемента ComboBox обновляется только свойство идентификатора MyWidget1.Widget ...
Как сделатьЯ получаю объект 'Widget' в 'MyWidget1', который будет обновлен, а не просто 'MyWidget1.Widget.ID'?
Вот ссылка на пример проекта, демонстрирующий этот сценарий:
http://www.webpersona.com/ObjectBinding.zip
Заранее спасибо за любую помощь:)
Обновление:
В файле: mwWindow.xaml
Я заменил:
<ComboBox
Name="Widgets_ComboBox"
Height="21"
Margin="5,5,5,0"
DisplayMemberPath="Description"
SelectedItem="Widget"
SelectedValue="{Binding Path=ID}"
SelectedValuePath="ID"/>
С:
<ComboBox
Name="Widgets_ComboBox"
Height="21"
Margin="5,5,5,0"
DisplayMemberPath="Description"
SelectedItem="Widget"
SelectedValue="{Binding Widget}"/>
В файле: Application.xaml.vb
Я заменил:
Public Sub ChangeSelectedMyWidget(ByVal sender As Object)
Dim tmpWindow As mwWindow = CType(My.Application.MainWindow, mwWindow)
My.Application.SelectedWidget = sender
tmpWindow.Widgets_ComboBox.DataContext = My.Application.SelectedWidget.Widget
End Sub
С:
Public Sub ChangeSelectedMyWidget(ByVal sender As Object)
Dim tmpWindow As mwWindow = CType(My.Application.MainWindow, mwWindow)
My.Application.SelectedWidget = sender
tmpWindow.Widgets_ComboBox.DataContext = My.Application.SelectedWidget
End Sub
И все равно не повезло.
Теперь после выбора прямоугольника он больше не выбирает правильно подобранный элемент в ComboBox.
В неотредактированномНапример, после выбора прямоугольника привязка выбирает правильно подобранный элемент в ComboBox, а затем, когда я изменяю выбор ComboBox, только идентификаторselected MyWidget.Widget обновляется.
Мне нужно именно это поведение, за исключением того, что обновляются все свойства MyWidget.Widget.
Я подозревал, что мне нужно связать объект Widget, а несвойство виджета ранее, но я не смог заставить его работать, поэтому я думаю, что вы правы в своем ответе, но мне кажется, что я все еще что-то упускаю.
Кроме того, спасибо затвоя помощь, Рэй.;)