Я провел последние два дня, пытаясь заставить это случиться, и я не могу понять, чего мне не хватает. У меня есть пользовательский элемент управления WPF с сеткой, и внутри этой сетки находятся текстовые поля и поля со списком. DataContext сетки устанавливается в коде C # с помощью объекта, и я смог двусторонним образом связать свои текстовые поля с объектом DataContext сетки. Вот пример кода. Объект, который входит в ClinicInfoRoot, является моим объектом Clinic, и одним из его свойств является StateID (который важен в данный момент)
private void Events_ClinicSelected( object sender, ClinicSelectedEventArgs e )
{
if ( !DesignerProperties.GetIsInDesignMode( this ) )
{
// Get the current logged in user object from arguments and set local
this.CurrentLoggedInPDUser = e.CurrentLoggedInPDUser;
// Bind the patient object to the window grid data context
this.ClinicInfoRoot.DataContext = e.Clinic;
// Set the mode and call mode manager
this.SetMode( Mode.View );
this.ModeManager();
}
}
Теперь для xaml:
<Grid Name="ClinicInfoRoot"
Margin="0,0,10,10"
Validation.Error="ClinicInfoRoot_Error">
<TextBox Margin="82,28,0,0"
Name="txtName"
VerticalAlignment="Top"
HorizontalAlignment="Left"
Width="82" >
<TextBox.Text>
<Binding Path="Name"
Mode="TwoWay"
ValidatesOnDataErrors="True"
ValidatesOnExceptions="True"
NotifyOnValidationError="True"
UpdateSourceTrigger="PropertyChanged"></Binding>
</TextBox.Text>
</TextBox>
<ComboBox HorizontalAlignment="Left"
Margin="281,141,0,0"
Name="cbState"
VerticalAlignment="Top"
Width="73"
ItemsSource="{Binding Mode=OneWay}"
DisplayMemberPath="Abbrev"
SelectedValuePath="StateID" >
<ComboBox.SelectedValue>
<Binding ElementName="ClinicInfoRoot"
Path="Clinic.StateID"
Mode="TwoWay"
ValidatesOnDataErrors="True"
ValidatesOnExceptions="True"
NotifyOnValidationError="True"
UpdateSourceTrigger="PropertyChanged"></Binding>
</ComboBox.SelectedValue>
</ComboBox>
Мне удалось связать текстовое поле с соответствующими свойствами из объекта Clinic, но проблема связана с моим списком состояний. Я связал ItemsSource со списком состояний из другого объекта, и поле со списком заполнено правильно. Однако я хочу, чтобы свойство StateID в объекте Clinic устанавливало то, что отображается в выпадающем списке, но я не могу понять, какими должны быть свойства ElementName и Path для SelectedValue.
Каков синтаксис для ElementName и Path в привязке для SelectedValue моего комбинированного списка?