2011-03-29 20 views
5

Bir sayıyı ikili dizgede göstermem gerekiyor (ör. 8 => 1000). Tabii ki BitConverter kullanarak dönüştürebilirim ve TextBox'ımın metnini dosya arkasındaki kodda kendi başıma ayarlayabilirim. Ama bu biraz çirkin görünüyor. TextBox'ı bir kaynağa bağlamak ve otomatik olarak dönüştürmek mümkün mü?Bir ilişkili kaynaktan ikili sayıları gösteriliyor

cevap

4

Böyle bir sınıf oluşturun bir ValueConverter

kullanmak öneririm:

public class BinaryConverter : IValueConverter 
{ 

    public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return System.Convert.ToString(Convert.ToInt32(Convert.ToDouble(value)), 2); 
    } 

    public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return null; 
    } 
} 

Sonra (arkasında herhangi bir kodu olmadan) bu gibi kullanabilirsiniz

<Window.Resources> 
    <local:BinaryConverter x:Key="binConverter"></local:BinaryConverter> 
</Window.Resources> 
<StackPanel> 
    <Slider Name="sli" Minimum="0" Maximum="255" IsSnapToTickEnabled="True"> 
    </Slider> 
    <TextBox Text="{Binding ElementName=sli,Path=Value,Mode=OneWay,Converter={StaticResource binConverter}}"></TextBox> 
</StackPanel>