Bir WPF programı yazıyorum ve bir TextBox'taki verileri bir stil veya şablon gibi tekrarlanabilir bir yöntemle biçimlendirmenin bir yolunu bulmaya çalışıyorum. Çok sayıda TextBox'ım var (tam olarak 95) ve her biri kendi çözünürlüğünü tanımlayabilen kendi sayısal verilerine bağlı. Örneğin, veri 99.123 ve 2 çözünürlüklü ise 99.12. Benzer şekilde 99 veri değeri ve çözünürlük 3 99.000 (99 değil) olarak görüntülenmelidir. Bunu yapmanın bir yolu var mı?
Düzenleme: Açıklığa kavuşturmalıyım, üzerinde çalıştığım ekranda 95 Metin Kutusu var, ancak programımdaki çeşitli ekranlardaki her Metin Kutusunun doğru ondalık basamak sayısını göstermesini istiyorum. Şimdi düşünüyorum da, bunlardan bazıları TextBoxes (şu anda çalıştığım ekran gibi) ve bazıları DataGrids veya ListViews, ancak TextBoxes için nasıl çalıştırılacağını bulabilirsem, eminim anlayabilirim diğer kontroller için de çıktı.
Bu durumda paylaşılacak çok fazla kod yok, ancak daha net hale getirmeye çalışacağım:
Aşağıdaki özellikleri içeren bir Görünüm Modelim var (vb.net):
Public ReadOnly Property Resolution As Integer
Get
Return _signal.DisplayResolution
End Get
End Property
Public ReadOnly Property Value As Single
Get
Return Math.Round(_signal.DisplayValue, Resolution)
End Get
End Property
ve XAML'de var:
<UserControl.Resources>
<vm:SignalViewModel x:Key="Signal" SignalPath="SomeSignal"/>
</UserControl.Resources>
<TextBox Grid.Column="3" IsEnabled="False" Text="{Binding Path=Value, Source={StaticResource Signal}, Mode=OneWay}" />
DÜZENLEME2 (benim çözümüm): Bir süre bilgisayardan uzaklaştıktan sonra, yüzüme bakan basit bir cevap bulmak için geri döndüğüm ortaya çıktı. Görünüm modelindeki verileri biçimlendirin!
Public ReadOnly Property Value As String
Get
Return (Strings.FormatNumber(Math.Round(_signal.DisplayValue, _signal.DisplayResolution), _signal.DisplayResolution))
End Get
End Property
IValueConverter
? Gerçek değeri ve çözünürlüğü dönüştürücüye aktarın ve sizin için yuvarlamayı kendi içinde yapmasına izin verin. BuStringFormat
95'lerin tam olarak nasılTextBox
üretildiğini bilmeden bir önermek zor .