Bu işe yaramazsa nedeni Label.Content
özellik türü Object
ait olduğunu ve Binding.StringFormat
olmasıdır yalnızca String
türünde bir özelliğe bağlandığında kullanılır. neler oluyor
geçerli:
Binding
sizin MaxLevelOfInvestment
değerini boks ve bir kutulu ondalık değer olarak Label.Content
özelliğini depoluyor.
- Etiket denetimi,
ContentPresenter
içeren bir şablona sahiptir.
ContentTemplate
ayarlandığı için, ContentPresenter
, Decimal
türü için tanımlanmış bir DataTemplate
arar. Hiçbiri bulamazsa, varsayılan bir şablon kullanır.
ContentPresenter
tarafından kullanılan varsayılan şablon, etiketin ContentStringFormat
özelliğini kullanarak dizeleri sunar.
iki çözelti de mümkündür: Bunun yerine Binding.StringFormat arasında
- kullanımı Label.ContentStringFormat veya
- örneğin
TextBlock.Text yerine Label.Content olarak bir String özelliğini kullanın
Etiketin nasıl kullanılacağı aşağıda açıklanmıştır.ContentStringFormat: sırasında ContentPresenter
aslında kendi Template
ve StringFormat
özelliklerini kullanır, ancak:
<TextBlock Text="{Binding Path=MaxLevelofInvestment, StringFormat='Amount is {0}'}" />
Not: Yukarıdaki açıklama bir detayı ihmal Kolaylık olması açısından burada
<Label Content="{Binding Path=MaxLevelofInvestment}" ContentStringFormat="Amount is {0}" />
bir TextBlock nasıl kullanılacağı ise Bunların yüklenmesi otomatik olarak ContentTemplate
ve Label
'un ContentStringFormat
özelliklerine şablonla bağlı olduğundan, ContentPresenter
aslında Label
'un özelliklerini kullanıyor gibi görünüyor.
olarak kullanabilirsiniz, şimdi anlamlıdır. Gelecek için bu temizliği yapmak için WPF ekibine kadar. –
Cevabınızı beğendim, sadece 1 yerine 2 paramın nasıl kullanılacağını biliyor musunuz? Burada gerçekten mücadele (TextBlock stringFormat gibi tetikleyiciler vb. Kullanırken birden fazla işlem yapabilir). – EricG