C # Silverlight - Combobox с двухсторонним связыванием? - PullRequest
2 голосов
/ 22 сентября 2009

EDIT:

Ответ, который я искал, был ....

<dataFormToolkit:DataField Label="Business Type:">
                                        <ComboBox x:Name="BusinessType" SelectedItem="{Binding BusinessType, Mode=TwoWay}" >
                                            <ComboBox.Items>
                                                <sys:String>Land</sys:String>
                                                <sys:String>Maritime</sys:String>
                                            </ComboBox.Items>
                                        </ComboBox>
                                    </dataFormToolkit:DataField>

Вот ссылка на статью

У меня есть бизнес-приложение c # silverlight, которое использует инфраструктуру сущностей ado.net и класс обслуживания домена для привязки к моей базе данных сервера sql и извлечения данных из / сохранения данных в мою базу данных. Я использовал пространство имен dataformtoolkit для разметки текстовых полей, которые можно редактировать / отображать данные, используя режим привязки TwoWay, чтобы обеспечить возможность чтения / записи.

В некоторых полях я хочу использовать выпадающий список вместо текстового поля, чтобы улучшить взаимодействие с пользователем в моем приложении. У меня сложилось впечатление, что я читаю в Интернете, что это не так просто, как должно быть. Мой текущий код текстового поля выглядит так:

<dataFormToolkit:DataField>
   <TextBox Text="{Binding BusinessType, Mode=TwoWay}" />
</dataFormToolkit:DataField>

моя попытка чего-то подобного выглядит следующим образом, но неверна:

<ComboBox>
  <ComboBox.Items>
    <ComboBoxItem Content="Maritime" IsSelected="{Binding BusinessType, Mode=TwoWay}" />
    <ComboBoxItem Content="Land" IsSelected="{Binding BusinessType, Mode=TwoWay}" />
  </ComboBox.Items>
</ComboBox>

NB / Я хочу, чтобы в поле со списком помещался список или перечисление и т. Д. (Предпочтительно список). Содержимое комбинированного списка не должно иметь ничего общего с базой данных, только когда пользователь нажимает кнопку «Отправить», выбор, сделанный в комбинированном списке, сохраняется в базе данных. Также важно, чтобы комбинированный список мог считывать данные из базы данных и отображать конкретный выбор, который уже был сделан, если это так.

**** EDIT:

Текущая настройка формы данных, привязанной к сетке данных с редактируемым полем businesstype в качестве текстового поля (я хочу заменить это текстовое поле комбинированным списком, имеющим два выбираемых элемента).

 <!--DataForm Declaration-->
 <dataFormToolkit:DataForm x:Name="dataForm1" Height="410" Width="331"
                 VerticalAlignment="Top"       
                 Header="Job Details"
                 CurrentItem="{Binding SelectedItem, ElementName=dataGrid1}" 
                 HorizontalAlignment="Left" >
           <dataFormToolkit:DataForm.EditTemplate>
                <DataTemplate>
                    <StackPanel>
                      <dataFormToolkit:DataField>
                        <TextBox Text="{Binding BusinessType, Mode=TwoWay}" />
                      </dataFormToolkit:DataField>
                    </StackPanel>
                </DataTemplate>
           </dataFormToolkit:DataForm.EditTemplate>
   </dataFormToolkit:DataForm>

Так, как мне манипулировать этим кодом, чтобы использовать комбинированный список вместо текстового поля?

Любая помощь в этом будет принята с благодарностью.

1 Ответ

3 голосов
/ 22 сентября 2009

Вы должны настроить привязку для использования свойства SelectedValue ComboBox.

<ComboBox SelectedValue="{Binding BusinessType, Mode=TwoWay}">...</ComboBox>

Проблема в том, что ListBox и ComboBox будут использовать метод Equals () для объекта в SelectedItem, поэтому, если типы не совпадают, ComboBox не будет устанавливать соответствующий выбранный элемент. Следовательно, BusinessType должен быть строкой, поскольку вы используете ComboBoxItem и задаете содержимое строки.

Если привязать ItemsSource к ComboBox, вы будете использовать SelectedItem, и это будет фактически тип сущности, и в этом случае у вас будет больше гибкости / контроля над тем, что равно чему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...