문제

나는 소수의 수집에 대한 combobox를 가지고 있습니다. 통화 변환기를 항목에 적용하는 올바른 방법은 무엇입니까?

편집하다:

a) 사용해야하는 기존 통화 변환기가 있습니다. 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를 구현하고 코드를 호출하여 주어진 금액을 형식화 된 문자열로 바꿉니다.

다른 팁

Combobox의 itemstringformat 속성을 사용하여 각 항목을 포맷하는 방법을 알려줄 수 있습니다.

<ComboBox ItemStringFormat="c">

그러나 "C"를 통화 형식으로 사용하면 로컬 컴퓨터에서 정의한 통화를 사용합니다. 귀하의 값이 $에 정의되어 있지만 클라이언트 PC가 파운드 또는 엔으로 통화 기호로 실행중인 경우, 원하는 것을 보지 못합니다.

사용 StringFormat 바인딩 발현에서

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

이것 좀 봐 자세한 내용은 블로그.

ValueConverter 또 다른 방법입니다 - StringFormat은 .NET3.0에서 작동하지 않습니다. WPF3.5 SP1이 필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top