سؤال

ولدي تحرير وسرد منضم إلى ObservableCollection من الكسور العشرية. ما هي الطريقة الصحيحة لتطبيق تحويل عملتنا إلى العناصر؟

وتحرير:

وأ) لقد لتحويل العملة الحالية أنني يجب أن تستخدم ب) Framework 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 ItemStringFormat="c">

ومع ذلك، تكون على علم أنه عند استخدام "ج" باعتباره المنسق العملة، فإنه سيتم استخدام العملة التي يحددها الجهاز المحلي. إذا تم تعريف القيم الخاصة بك في $ ولكن PC عميلك تعمل مع جنيه أو الين كرمز العملة، فإنها لن تكون رؤية ما تريد لهم ان يروا.

استخدم على StringFormat في التعبير ملزم مثل

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

وانظر هذا <وأ href = "http://blogs.msdn.com/llobo/archive/2008/05/19/wpf-3-5-sp1-feature-stringformat.aspx" يختلط = "نوفولو noreferrer" > بلوق لمزيد من التفاصيل.

ValueConverter وسيلة أخرى - العمل StringFormat] لا على .NET3.0 يحتاج WPF3.5 SP1.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top