Как редактировать Родительский ListboxItem из отдельных Listboxes, которые иерархически связаны - PullRequest
0 голосов
/ 11 июня 2010

У меня довольно сложная ситуация Binding.У меня есть решение, которое я создал в формах Windows для этого еще в VS2005, но сейчас я воссоздаю элемент управления с помощью wpf, но я делаю это не так, как раньше.

IУ меня есть элемент управления списком, который имеет следующий DataTemplate:

<DataTemplate>
  <Border CornerRadius="5" BorderBrush="Black" BorderThickness="1">
    <StackPanel>
      <TextBlock x:Name="TaxonomyCode" Margin="2" FontWeight="Bold"
      FontSize="12">
        <TextBlock.Text>
          <MultiBinding StringFormat="{}{0}{1}{2}X">
            <Binding Path="TaxonomyTypeID" />
            <Binding Path="TaxonomyClassificationID" />
            <Binding Path="TaxonomySpecializationID" />
          </MultiBinding>
        </TextBlock.Text>
      </TextBlock>
      <TextBlock Margin="2"
      Text="{Binding ElementName=TaxonomyCode,Path=Text,Converter={StaticResource TaxonomyCodeToDescriptionConverter}}" />
    </StackPanel>
  </Border>
</DataTemplate>

Ниже у меня есть 3 списка, которые перечисляют фактические иерархии таксономии, используя свойства моей ViewModel ...

<ListBox 
    Grid.Column="0" Grid.Row="1" 
    ItemsSource="{Binding TaxonomyTypeLUT}" 
    DisplayMemberPath="IDDescription" 
    SelectedItem="{Binding Path=SelectedTaxonomyType}" />
<ListBox 
    Grid.Column="1" Grid.Row="1"
    ItemsSource="{Binding SelectedTaxonomyType.TaxonomyClassifications}"
    DisplayMemberPath="IDDescription"
    SelectedItem="{Binding Path=SelectedTaxonomyClassification}" />
<ListBox 
    Grid.Column="2" Grid.Row="1"
    ItemsSource="{Binding SelectedTaxonomyClassification.TaxonomySpecializations}"
    DisplayMemberPath="IDDescription"
    SelectedItem="{Binding SelectedTaxonomySpecializations}" />

ФактическийСвязывание базы данных также довольно сложно.С несколькими ключами для каждой таблицы в иерархии, потому что каждая таблица может содержать один и тот же ключ, который принадлежит разным родителям ... например,

код таксономии: 207R00000X, который разбивается на: 20 7R 00000 переводится в: Аллопатический,внутренняя медицина, код таксономии внутренней медицины: 208M00000X, который разбивается на: 20 8M 00000 переводится как: аллопат, госпиталист, госпиталист

Каждый из этих разбивок является ключевым полем в своей таблице.

alt text

Вот схема моих таблиц.

Я пытаюсь, чтобы мой нижний элемент управления менял каждого ребенка по мере того, как сделан новый выбор.У меня это работает.Теперь, когда я выбираю верхний список, я хочу, чтобы нижние списки отражали Таксономию выбранного элемента.Я тоже могу это сделать, связав One-Way.

Если я не связываю односторонний путь, я получаю следующее сообщение об ошибке: «Свойство« TaxonomySpecializationID »является частью ключевой информации объекта и не может быть изменено».

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

1 Ответ

0 голосов
/ 21 июля 2010

Я нашел способ создать новый элемент с нужным значением, удалить исходное значение из коллекции и вставить новый элемент.

...