2010-10-24 19 views
11

Ben gösteren olacak ve ben her TextBlock metin farklı görüntülenecek gerek ediyorum TextBlocks bir koleksiyona sahip. Şu anda etiket dizisinde biçim dizesini kaydediyorum ve metni bu biçimde görüntülemem gerekiyor. StringFormat bölümünü nasıl bağlarım? Aşağıdaki bölümde benzeriCilt StringFormat

şey: BindingBase.StringFormat yana

<TextBlock Tag="{Binding MyFormatString}" Text="{Binding MyProperty, StringFormat='{}{0:MyTag}'}" />

cevap

18

bir bağımlılık özelliği değildir, bunu bağlayabilir sanmıyorum. Biçimlendirme dize değişiyorsa, seni bu

<TextBlock Text="{Binding MyFormattedProperty}" /> 

gibi bir şey başvurmak ve görünümü modelinde biçimlendirme yapmak zorunda kalacaktır korkuyorum. Alternatif olarak, bir MultiBinding ve dönüştürücü (örnek kod denenmemiş) kullanabilirsiniz: yakın UI tabakasına yaşamalıdır nedenle

<TextBlock> 
    <TextBlock.Text> 
     <MultiBinding Converter="{StaticResource myStringFormatter}"> 
      <Binding Path="MyProperty" /> 
      <Binding Path="MyFormatString" /> 
     </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 

public class StringFormatter : IMultiValueConverter 
{ 
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) 
    { 
     return string.Format((string)values[1], values[0]); 
    } 
    ... 
} 
0

Dize Biçimlendirme bir görüntüleme ayardır ve, sen Xaml beyan veya olabilir ya bir ViewModel üzerinde dize özelliklerini biçimlendirilmiş ve ViewModel özelliklerini bu özelliklerin Get içinde biçimlendirme gerçekleştirmek ve buna TextBlock bağlamak. Verilerini orijinal veri kaynağından alırdı.

1
<TextBlock> 
    <TextBlock.Text> 
     <MultiBinding StringFormat="{}{0},{1}"> 
      <Binding Path="MyProperty" /> 
      <Binding Path="MyFormatString" /> 
     </MultiBinding> 
    </TextBlock.Text> 
</TextBlock> 
İlgili konular