私はWPFプログラムを作成していますが、スタイルやテンプレートのような再現可能なメソッドを使用してTextBoxのデータをフォーマットする方法を理解しようとしています。私は多くのTextBoxes(正確には95)を持っていて、それぞれ独自の数値データにバインドされています。それぞれ独自の解像度が定義されています。たとえば、データが99.123で解像度が2の場合、99.12と表示されます。同様に、データ値99と解像度3は、99.000(99ではない)と表示する必要があります。これを行う方法はありますか?スタイル/テンプレートを使用してwpfの小数点以下の桁数をフォーマットする方法は?
編集:私は明確にすべき 、そこに私が働いている現在の画面上の95件のTextBoxがありますが、私は私のプログラムで様々な画面を通じて、すべてのテキストボックスは、小数点以下の桁数を正しく表示したいです。今私はそれについて考えている、これらのいくつかはTextBoxes(私が今作業している画面のようなもの)とDataGridsまたはListViewsですが、TextBoxesのために働く方法を理解できれば、それは他のコントロールのためにも同様です。
あり、この場合、共有するために多くのコードではないのですが、私はそれをより明確にしようとします:
私は、次のプロパティ(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(私の解決策): それは後に離れてFRを歩くことが判明しますコンピュータをしばらくの間、私は顔の私を見つめていた簡単な答えを見つけるために戻ってきた。ビューモデルでデータをフォーマットしてください!
Public ReadOnly Property Value As String
Get
Return (Strings.FormatNumber(Math.Round(_signal.DisplayValue, _signal.DisplayResolution), _signal.DisplayResolution))
End Get
End Property
「IValueConverter」を使用していますか?実際の値と解像度をコンバーターに渡し、それ自体の中であなたのために切り上げます。これらの 'TextBox'がどれだけ正確に生成されているかを知らなくても、' StringFormat'を提案するのは難しいです。 – Viv
現在のコードとXAMLをポストします。そうでなければ、それはすべての推測であり、役に立たない推測です。 –
質問にもっと情報を追加しましたが、それはうまくいけば分かります。 – AXG1010