ฉันกำลังเขียนโปรแกรม WPF และฉันพยายามหาวิธีจัดรูปแบบข้อมูลในกล่องข้อความด้วยวิธีการที่ทำซ้ำได้เช่นสไตล์หรือเทมเพลต ฉันมีกล่องข้อความจำนวนมาก (95 เป็นค่าที่แน่นอน) และแต่ละอันจะเชื่อมโยงกับข้อมูลตัวเลขของตัวเองซึ่งแต่ละอันสามารถกำหนดความละเอียดของตัวเองได้ ตัวอย่างเช่นหากข้อมูลเป็น 99.123 ที่มีความละเอียด 2 ข้อมูลก็ควรแสดงเป็น 99.12 ในทำนองเดียวกันค่าข้อมูล 99 และความละเอียด 3 ควรแสดงเป็น 99.000 (ไม่ใช่ 99) มีวิธีทำไหม?
แก้ไข: ฉันควรจะชี้แจงมีกล่องข้อความ 95 รายการบนหน้าจอปัจจุบันที่ฉันกำลังทำงานอยู่ แต่ฉันต้องการให้กล่องข้อความทุกชิ้นตลอดหน้าจอต่างๆในโปรแกรมของฉันแสดงจำนวนตำแหน่งทศนิยมที่ถูกต้อง ตอนนี้ฉันคิดเกี่ยวกับเรื่องนี้บางส่วนเป็น TextBoxes (เช่นหน้าจอที่ฉันกำลังทำงานอยู่ตอนนี้) และบางส่วนเป็น DataGrids หรือ ListViews แต่ถ้าฉันสามารถหาวิธีทำให้มันทำงานกับกล่องข้อความได้ฉันแน่ใจว่าฉันสามารถคิดได้ สำหรับการควบคุมอื่น ๆ ด้วย
ในกรณีนี้มีโค้ดไม่มากนัก แต่ฉันจะพยายามทำให้ชัดเจนขึ้น:
ฉันมี View Model ซึ่งมีคุณสมบัติดังต่อไปนี้ (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
และใน XAML ฉันมี:
<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}" />
EDIT2 (วิธีแก้ปัญหาของฉัน): ปรากฎว่าหลังจากเดินออกไปจากคอมพิวเตอร์สักพักฉันก็กลับมาพบคำตอบง่ายๆที่จ้องหน้าฉันอยู่ จัดรูปแบบข้อมูลในโมเดลมุมมอง!
Public ReadOnly Property Value As String
Get
Return (Strings.FormatNumber(Math.Round(_signal.DisplayValue, _signal.DisplayResolution), _signal.DisplayResolution))
End Get
End Property
IValueConverter
? ส่งค่าจริงและความละเอียดไปยังตัวแปลงและปล่อยให้มันทำการปัดเศษให้คุณภายในตัวเอง เป็นการยากที่จะแนะนำStringFormat
โดยไม่รู้ว่า 95 เหล่านี้TextBox
สร้างขึ้นได้อย่างไร