Quantcast
Channel: 午後わてんのブログ
Viewing all articles
Browse latest Browse all 420

WPF、BindingのStringFormat、数値の書式設定をVBコードで

$
0
0

XAMLじゃなくてVBコードで
Bindingした数値の書式設定
イメージ 1
SliderのValuePropertyはDouble型、これを各TextBlockのTextPropertyにBindingして表示するときの書式設定の例

数値が123.45で
表示小数点以下が要らないとき
123Binding.StringFormat = "0"
123Binding.StringFormat = "{0:0}"

数値の前や後ろに文字列を追加したいとき
文字列123Binding.StringFormat = "文字列{0:0}"
123文字列Binding.StringFormat = "{0:0}文字列"
字123字Binding.StringFormat = "字{0:0}字"


0のとき
イメージ 4


一桁整数のとき
イメージ 5

二桁整数のとき
イメージ 6

マイナスの一桁
イメージ 7
文字列と組み合わせたときのマイナス記号が表示される位置
{}を使わないと変な位置に付く

小数点
イメージ 8

小数点
イメージ 9




参照したところ
BindingBase.StringFormat プロパティ(System.Windows.Data)
https://msdn.microsoft.com/ja-jp/library/system.windows.data.bindingbase.stringformat(v=vs.110).aspx

Nine Works WPFのStringFormatによるフォーマット指定
http://nineworks2.blog.fc2.com/blog-entry-10.html

数字をBindingするときの書式指定|かに太郎、ただいま開発中
http://ameblo.jp/kani-tarou/entry-10202879097.html

標準の数値書式指定文字列
https://msdn.microsoft.com/ja-jp/library/dwhawy9k.aspx

標準の数値書式指定文字列
https://msdn.microsoft.com/ja-jp/library/dwhawy9k.aspx#GFormatString
ありがとうございます!




VBコード

Class MainWindow
    Private Sub MainWindow_Initialized(sender As Object, e As EventArgs) Handles Me.Initialized

        Dim b As New Binding("Value") With {.Source = Slider1}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "0"}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "0.0"}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "0.000"}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "00.000"}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "000.000"}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "##0.000"}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "スライダーの値 = 0.000"}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "スライダーの値 = {0:0.000}"}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "スライダーの値 = {0.000}"}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "{0:00.000}"}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "{0:N3}"}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "N3"}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "P3"}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "G20"}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "G5"}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "{0:G5}"}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "{0:C}"}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "{0:C}",
            .ConverterCulture = System.Globalization.CultureInfo.CurrentCulture}
        Call SetTextBlock(b)

        b = New Binding("Value") With {.Source = Slider1, .StringFormat = "{0:C2}",
            .ConverterCulture = System.Globalization.CultureInfo.CurrentCulture}
        Call SetTextBlock(b)

    End Sub

    Private Sub SetTextBlock(b As Binding)
        Dim tb As New TextBlock
        tb.SetBinding(TextBlock.TextProperty, b)
        LeftPanel.Children.Add(tb)

        'Dim str As String
        'str = $"StringFormat = ""{b.StringFormat}"""

        tb = New TextBlock With {.Text = b.StringFormat}
        RightPanel.Children.Add(tb)
    End Sub
End Class



XAML
イメージ 2

イメージ 3
ヤフーブログのかんたんモードだとXAMLのコードは投稿できないから画像で




1年ぶりくらいにWPFでのアプリ作成再開したけどすんごい忘れていてまた最初から調べなおしている感じ、また夏になったら完全に止まっちゃうからいつになったらできるかわかんないな
今くらいの気候が続いてくれたら最高なんだけどなあ




Viewing all articles
Browse latest Browse all 420

Trending Articles