2015-01-01 3 views
1

Я пытаюсь загрузить значения DistanceRoundoffs в список ComboBox. Значения находятся в mm, но я хочу показать их в cm, поэтому мне нужно будет использовать преобразователь значений.Как определить преобразователь значений для combobox в XAML

Я не знаю, как и где его использовать. Должен ли я определить его в ItemsSource или SelectedItem?

Мне не нужен код для преобразователя значений; Просто реализация в XAML для текущего combobox.

<ComboBox ItemsSource="{Binding Path=DistanceRoundoffs}" 
      SelectedItem="{Binding DistanceRoundoff, 
        RelativeSource={RelativeSource FindAncestor, AncestorType=Window}, 
        Mode=TwoWay}"> 
     <ComboBox.ItemTemplate> 
      <DataTemplate> 
       <TextBlock> 
        <TextBlock.Text> 
         <MultiBinding Converter="{StaticResource MultiUnitConverter}" ConverterParameter="{x:Static enumerations:Quantity.Length}"> 
          <Binding Path="RebarsVerticalDistanceRoundoff"/> 
          <Binding Path="CurrentTargetUnit"/> 
         </MultiBinding> 
        </TextBlock.Text> 
       </TextBlock> 
      </DataTemplate> 
     </ComboBox.ItemTemplate> 
</ComboBox> 

private List<double> distanceRoundoffs = new List<double> {25, 50}; 
public List<double> DistanceRoundoffs 
{ 
    get { return distanceRoundoffs; } 
    set 
    { 
     distanceRoundoffs = value; 
     RaisePropertyChanged("DistanceRoundoffs"); 
    } 
} 

private double distanceRoundoff; 
public double DistanceRoundoff 
{ 
    get { return distanceRoundoff; } 
    private set 
    { 
     distanceRoundoff= value; 
     RaisePropertyChanged("DistanceRoundoff"); 
    } 
} 
+0

И ты читал учебник? Это не кодирование, если вам нужно что-то закодированное, нанять разработчика. Если вы хотите учиться, прочитайте учебник, * попробуйте * и придите сюда с конкретным вопросом. «Пожалуйста, запрограммируйте это для меня», это не вопрос. – nvoigt

+0

@nvoigt Да, я читал учебники. Но бывают случаи, когда вы застряли вне зависимости от того, сколько учебников вы прочитали. И я не просил код, который я только что спросил, где я должен использовать конвертер. – Vahid

ответ

2

Вы должны использовать преобразователь в ItemTemplate в ComboBox:

<ComboBox ...> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Converter={StaticResource UnitConverter}}"/> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 
+0

Спасибо, Клеменс, на самом деле это был метод, который я использовал изначально, но XAML не распознает 'RebarsVerticalDistanceRoundoff' при использовании в datatemplate. Я обновил вопрос. – Vahid

+0

А теперь я угадаю, что это? – Clemens

+0

Это работает с вашим исходным кодом @Vahid. Вам нужно будет объяснить, что делает ваш обновленный код, какие ошибки вы получаете и т. Д. –

Смежные вопросы