Вопрос

У меня есть ComboBox, привязанный к ObservableCollection десятичных знаков.Как правильно применить наш конвертер валют к товарам?

Редактировать:

а) У меня есть существующий конвертер валюты, который я должен использовать b) .NET 3.0

Нужно ли мне создавать шаблоны для элементов?

Это было полезно?

Решение

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

<Window.Resources>
    <my:CurrencyConverter x:Key="currencyConverter" />

    <DataTemplate x:Key="thingTemplate" DataType="{x:Type my:Thing}">
        <TextBlock
            Text="{Binding Amount,Converter={StaticResource currencyConverter}}" />
    </DataTemplate>
</Window.Resources>

<ComboBox
    ItemSource="... some list of Thing instances ..."
    ItemTemplate="{StaticResource thingTemplate}" />

Итак, вы просто определяете свой класс CurrencyConverter так, чтобы он реализовывал IValueConverter, и вызываете ваш код для преобразования заданной суммы в форматированную строку.

Другие советы

Вы можете использовать свойство ItemStringFormat в ComboBox, чтобы указать, как форматировать каждый из его элементов:

<ComboBox ItemStringFormat="c">

Однако имейте в виду, что при использовании «c» в качестве средства форматирования валюты будет использоваться валюта, определенная локальным компьютером.Если ваши значения определены в долларах США, но на вашем клиентском компьютере в качестве символа валюты используются фунты или иены, они не увидят то, что вы хотите, чтобы они видели.

Использовать Строковый формат в выражении привязки, например

<TextBox Text="{Binding Path=Value, StringFormat=Amount: {0:C}}"/>

Видеть это блог для более подробной информации.

А Конвертер значений это другой способ - StringFormat не работает на .NET3.0, ему нужен WPF3.5 SP1.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top