Lý do điều này không hoạt động là thuộc Label.Content
tính thuộc loại Object
và Binding.StringFormat
chỉ được sử dụng khi liên kết với thuộc tính của loại String
.
Điều gì đang xảy ra là:
- Các
Binding
bị đấm bốc của bạn MaxLevelOfInvestment
giá trị và lưu trữ nó trở thành Label.Content
tài sản như một giá trị thập phân đóng hộp.
- Điều khiển Nhãn có một mẫu bao gồm a
ContentPresenter
.
- Vì
ContentTemplate
không được đặt, hãy ContentPresenter
tìm một DataTemplate
định nghĩa cho Decimal
loại. Khi không tìm thấy, nó sử dụng một mẫu mặc định.
- Mẫu mặc định được các
ContentPresenter
chuỗi trình bày sử dụng bằng cách sử dụng thuộc tính của nhãn ContentStringFormat
.
Có thể có hai giải pháp:
- Sử dụng Label.ContentStringFormat thay vì Binding.StringFormat, hoặc
- Sử dụng thuộc tính String như TextBlock.Text thay vì Label.Content
Đây là cách sử dụng Label.ContentStringFormat:
<Label Content="{Binding Path=MaxLevelofInvestment}" ContentStringFormat="Amount is {0}" />
Đây là cách sử dụng TextBlock:
<TextBlock Text="{Binding Path=MaxLevelofInvestment, StringFormat='Amount is {0}'}" />
Lưu ý: Để đơn giản hơn, tôi đã bỏ qua một chi tiết trong phần giải thích ở trên: Thực ContentPresenter
sự sử dụng thuộc tính Template
và của riêng nó StringFormat
, nhưng trong quá trình tải, chúng tự động bị ràng buộc bởi mẫu với các thuộc tính ContentTemplate
và ContentStringFormat
của Label
, vì vậy có vẻ như ContentPresenter
thực sự đang sử dụng Label
thuộc tính của .