2010-09-16 27 views
5

Trong XAML, bạn có thể dễ dàng sử dụng StringFormat='$#,0;$-#,0;Nil' để hiển thị biến số nguyên bị ràng buộc dưới dạng số đô la được định dạng độc đáo. ví dụ: 1024 sẽ xuất hiện dưới dạng '$ 1,024'.Có cách nào để làm cho XAML/C# StringFormat hiển thị toàn bộ đô la cho số tiền lớn hơn nhưng xu cho số tiền nhỏ hơn?

Tôi cần phải xử lý các số từ vài xu đến vài trăm đô la - vì vậy 0.45 sẽ hiển thị là '$ 0,45', nhưng bất kỳ thứ gì lớn hơn ngưỡng (1? 9,99?) Sẽ hiển thị số tiền. Ví dụ. 12.73 sẽ hiển thị là '$ 13'.

Trước khi tôi tiếp tục và cuộn một số mã lộn xộn và cụ thể vừa phải, có ai có cách thông minh hay để làm điều này không? Lý tưởng nhất, tất cả sẽ là trong StringFormat :)

Trả lời

7

Tôi không thể thấy tất cả logic này có thể được đặt trong StringFormat như thế nào.

Tôi nghĩ cách sạch nhất là triển khai IValueConverter. Bạn có thể sử dụng thông số chuyển đổi để đặt ngưỡng, để trình chuyển đổi có thể được sử dụng lại và không có giá trị mã hóa cứng. Trừ khi bạn đang sử dụng hai chiều ràng buộc, và nếu bạn đang thực hiện MVVM, nó có lẽ là thích hợp hơn để có một biến chuỗi trong mô hình xem trả về giá trị hiển thị dựa trên giá trị số nguyên.

+0

Cảm ơn, bạn có thể đúng và tôi đang nghĩ về phiên bản chuỗi. Sự ràng buộc của tôi là một chiều, nhưng tôi sẽ để câu hỏi đó chạy một lúc. – whybird

1

Đừng ngại tạo bộ chuyển đổi giá trị cho trường hợp cụ thể này.

Nếu có nhu cầu kinh doanh đối với loại định dạng này thì có khả năng nó sẽ được sử dụng lại sau này và biến nó trở thành Trình chuyển đổi giá trị giúp dễ dàng sử dụng lại và kiểm tra.

Đề xuất của Jay có thể sạch sẽ vì yêu cầu của bạn sẽ cần phải sử dụng logic cho ngưỡng định dạng.

Các vấn đề liên quan