2010-10-19 6 views
22

Bir kaydırma denetleyicisinin araç ipucunu Value özelliğine bağladım ve "Geçerli Değer {0}/10" değerini göstermek için StringFormat'ı kullanmaya çalışıyorum { 0} Value özelliği. Aşağıda bunu anlamaya çalışırken denediğim çeşitli şeylerden biri var.wpf - string literal kullanarak etiketi üzerinde stringformat bağlama

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

Yukarıdaki gibi benim gibi dize değişmezleriyle stringformat'ın nasıl kullanılacağı hakkında çevrimiçi örnekler bulma konusunda sorunlar yaşıyorum. Çok sayıda stringformat tarih/saat/para birimi biçimi dönüşümü görüyorum. Sanırım bunu çok -bağlamalı bir iş ile yapmanın bir yolu var, ama sadece gerekli olandan fazladan bir iş gibi görünüyor. Umarım dizgi için biçimlendirmek için hala özel bir dönüştürücü yazmam gerekmez.

Uygulamamda, öğelerin yanında birçok ekstra etiket kullanarak kendimi buluyorum. Bu nedenle, stringformat'ta bir anlayış elde etmek, bu gereksiz etiketlerin bazılarını elimden çıkaracaktır.

cevap

32

Araç İpucu için WPF binding with StringFormat doesn't work on ToolTips'a bakabilirsiniz.

Yukarıda belirttiğiniz StringFormat'a göre, dizgenden kaçmak zorundasınız.

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

Burada bir dizi StringFormat örneğidir. Eğer o iş için sırayla string olmalıdır en bağlayıcı hedef türü olarak orada Binding.StringFormat kullanamaması için http://blogs.msdn.com/b/llobo/archive/2008/05/19/wpf-3-5-sp1-feature-stringformat.aspx

+1

Hala alamayan benim kaydırıcı Value özelliği üzerinde çalışmak için bağlayıcı Ancak, araç ipucunu kaydırıcının bağlı olduğu değişkene bağladığımda çalışır. Belki Değer, bir çift kaydırılabilir kaydırıcı özelliği değil ..hmm – TWood

94

Label.Content nesnedir.

İki çalışma alanı vardır: Label yerine TextBlock kullanın ve Text özelliğini bağlayın.

Kullanım Label.ContentStringFormat yani

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

Yalnızca ilk karakteri ise {} ile string kaçış gereken {

+0

Tarihler şu şekilde biçimlendirilebilir: "Başlangıç ​​Tarihi: {0: dd-MM-yyyy}" –