WPF 프로그램을 작성 중이며 스타일이나 템플릿과 같은 반복 가능한 방법을 통해 TextBox의 데이터 서식을 지정하는 방법을 찾으려고합니다. 나는 많은 TextBoxes (정확히 95)를 가지고 있으며 각각은 자체 해상도를 정의 할 수있는 자체 숫자 데이터에 바인딩되어 있습니다. 예를 들어 데이터가 해상도가 2 인 99.123이면 99.12를 표시해야합니다. 마찬가지로 데이터 값 99와 해상도 3은 99.000 (99가 아님)으로 표시되어야합니다. 이를 수행하는 방법이 있습니까?
편집 : 작업중인 현재 화면에 95 개의 TextBox가 있지만 프로그램의 다양한 화면에있는 모든 TextBox가 올바른 소수 자릿수를 표시하기를 원합니다. 이제 생각해 보면이 중 일부는 TextBox (예 : 지금 작업중인 화면)이고 일부는 DataGrids 또는 ListViews이지만 TextBox에서 작동하는 방법을 알아낼 수 있다면 다른 컨트롤도 마찬가지입니다.
이 경우 공유 할 코드는 많지 않지만 더 명확하게 만들려고합니다.
다음 속성 (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
생성 되는지 모른 채 a를 제안하기는 어렵습니다 .