Преобразователи значений - Доступ к переменным Convert () в методе ConvertBack ()? - PullRequest
0 голосов
/ 17 июня 2011

У меня есть конвертер, который имеет пару входных переменных (объект и TextBox), а затем возвращает свойство TextBox.Text String.

Проблема, с которой я сталкиваюсь, заключается в методе ConvertBack() моего конвертера. У меня нет способа связать какие-либо обновления с объектом, поскольку все, что я получаю, это строка (текст текстового поля) Есть ли способ получить доступ к некоторым (если не ко всем) переменным Convert()? Или хотя бы знать, какое текстовое поле вызывает ConvertBack()?

Вот мой код ItemsControl:

<ItemsControl x:Name="ItemsControlGrid" ItemsSource="{Binding Path=ProjectOrganLocation.LesionTypes, Source={StaticResource Locator}}" >
    <ItemsControl.ItemsPanel>
         <ItemsPanelTemplate>
              <StackPanel Orientation="Horizontal" />
         </ItemsPanelTemplate>
     </ItemsControl.ItemsPanel>
     <ItemsControl.ItemTemplate>
         <DataTemplate>
              <TextBox Width="75" TextAlignment="Center" >
                   <TextBox.Text>
                         <MultiBinding Converter="{StaticResource LesionTypeConverter}"  >
                              <Binding RelativeSource="{RelativeSource AncestorType={x:Type TreeViewItem}}" Path="DataContext.OrganLocation"/>
                              <Binding RelativeSource="{RelativeSource Self}" Path="." />
                          </MultiBinding>
                    </TextBox.Text>
                </TextBox>
            </DataTemplate>
      </ItemsControl.ItemTemplate>
 </ItemsControl>

А вот фрагмент из моего конвертера:

List<CategoryCode> Lesions = organ.getLesionTypes;

    if (organ.OrganDisplayName == organ.CurrentOrgan)
       organ.Count++;
    else
    {
       organ.Count = 0;
       organ.CurrentOrgan = organ.OrganDisplayName;
    }
return organ.Labels[organ.Count].LabelPrefix;

Ответы [ 2 ]

4 голосов
/ 17 июня 2011

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

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

0 голосов
/ 17 июня 2011

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

...