Tôi đang viết một chương trình WPF và tôi đang cố gắng tìm ra cách để định dạng dữ liệu trong TextBox thông qua một số phương pháp có thể lặp lại như kiểu hoặc mẫu. Tôi có rất nhiều TextBox (chính xác là 95) và mỗi cái được liên kết với dữ liệu số của riêng nó, mỗi cái có thể có độ phân giải riêng được xác định. Ví dụ: nếu dữ liệu là 99.123 với độ phân giải là 2 thì nó sẽ hiển thị 99.12. Tương tự, giá trị dữ liệu là 99 và độ phân giải 3 sẽ được hiển thị là 99.000 (không phải 99). Có cách nào để làm việc này không?
Chỉnh sửa: Tôi nên làm rõ, có 95 TextBox trên màn hình hiện tại mà tôi đang làm việc, nhưng tôi muốn mọi TextBox trên khắp các màn hình khác nhau trong chương trình của mình hiển thị đúng số vị trí thập phân. Bây giờ tôi nghĩ về nó, một số trong số này là TextBox (như màn hình tôi đang làm việc bây giờ) và một số là DataGrids hoặc ListViews, nhưng nếu tôi có thể tìm ra cách làm cho nó hoạt động cho TextBoxes, tôi chắc chắn tôi có thể tìm ra nó cũng cho các điều khiển khác.
Không có nhiều mã để chia sẻ trong trường hợp này nhưng tôi sẽ cố gắng làm cho nó rõ ràng hơn:
Tôi có Mô hình dạng xem chứa các thuộc tính sau (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
và trong XAML tôi có:
<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 (giải pháp của tôi): Hóa ra là sau khi rời khỏi máy tính một lúc, tôi quay lại và thấy một câu trả lời đơn giản đang nhìn chằm chằm vào mặt tôi. Định dạng dữ liệu trong mô hình xem!
Public ReadOnly Property Value As String
Get
Return (Strings.FormatNumber(Math.Round(_signal.DisplayValue, _signal.DisplayResolution), _signal.DisplayResolution))
End Get
End Property
IValueConverter
? Chuyển giá trị thực và độ phân giải cho bộ chuyển đổi và để nó tự làm tròn cho bạn. Thật khó để đề xuất mộtStringFormat
mà không biết chính xác 95TextBox
's này được tạo ra như thế nào .