2010-10-19 49 views
22

Tôi đã gắn dấu chú giải công cụ điều khiển thanh trượt với thuộc tính Giá trị và tôi đang cố sử dụng StringFormat để hiển thị "Giá trị hiện tại {0} của 10" trong đó { 0} là thuộc tính Value. Dưới đây là một trong những điều khác nhau tôi đã cố gắng khi cố gắng tìm ra điều này.wpf - binding stringformat trên nhãn sử dụng chuỗi ký tự

<Slider.ToolTip> 
    <Label> 
    <Label.Content> 
     <Binding StringFormat="Current Value {0} of 10" 
       ElementName="DebugLevelSlider" 
       Path="Value" /> 
    </Label.Content> 
    </Label> 
</Slider.ToolTip> 

Tôi gặp sự cố khi tìm các ví dụ trực tuyến về cách sử dụng stringformat với chuỗi ký tự như tôi ở trên. Tôi thấy rất nhiều chuyển đổi định dạng ngày/giờ/định dạng tiền tệ stringformat. Tôi nghĩ rằng tôi có một cách để làm điều này với một multibinding nhưng nó chỉ có vẻ giống như một số tiền thêm công việc hơn cần thiết. Tôi hy vọng rằng đối với định dạng chuỗi chữ tôi vẫn không phải viết một công cụ chuyển đổi tùy chỉnh.

Trong ứng dụng của mình, tôi thấy mình sử dụng nhiều nhãn phụ bên cạnh các mục để hiểu rõ về stringformat hy vọng sẽ loại bỏ một số nhãn không cần thiết đó.

Trả lời

32

Đối với Chú giải công cụ, bạn có thể xem WPF binding with StringFormat doesn't work on ToolTips.

Theo như StringFormat bạn chỉ định ở trên, bạn phải thoát khỏi chuỗi của mình.

StringFormat="{}Current Value {0} of 10" 

Đây là một loạt các ví dụ về StringFormat. http://blogs.msdn.com/b/llobo/archive/2008/05/19/wpf-3-5-sp1-feature-stringformat.aspx

+1

tôi vẫn không thể có được ràng buộc để làm việc trên các tài sản giá trị của thanh trượt của tôi nhưng nó hoạt động khi tôi liên kết chú giải công cụ với biến mà thanh trượt bị ràng buộc. Có thể Giá trị không phải là thuộc tính thanh trượt có thể ràng buộc..hmm – TWood

94

Label.Content là đối tượng nên bạn không thể sử dụng Binding.StringFormat có như các loại mục tiêu ràng buộc của phải string để cho nó để làm việc.

Hai xung quanh là: sử dụng TextBlock thay vì Label và liên kết thuộc tính Text.

Sử dụng Label.ContentStringFormat tức

<Label ContentStringFormat="Current Value {0} of 10" Content={Binding ...} /> 

Bạn chỉ cần thoát khỏi string với {} nếu ký tự đầu tiên của bạn là một {

+0

Ngày có thể được định dạng trong đây như sau: "Ngày bắt đầu: {0: dd-MM-yyyy}" –