Open4

Avalonia.FuncUI.DSLでDataGridと格闘

可変可変

数値の列は桁区切りとかフォーマット指定して、右揃えにしたい。

DataGridTextColumn.create [
    DataGridTextColumn.header "数量"
    DataGridTextColumn.binding (
        let binding = Binding "Quantity"
        binding.StringFormat <- "{0:#,0.###}"
        binding
    )
    DataGridTextColumn.cellTheme (
        let theme = ControlTheme()
        theme.TargetType <- typeof<DataGridCell>

        theme.Setters.Add(
            Setter(
                DataGridCell.HorizontalAlignmentProperty,
                HorizontalAlignment.Right
            )
        )

        theme
    )
]
可変可変

(DataGridに限ったことではないが)Bindingのpathを文字列で指定していると、リファクタリングでレコードのフィールド名変えたときに追従モレするので、

type Item = { Name: string; Quantity: decimal }
let itemDummy = { Name = ""; Quantity = 0m }

// 前後は省略
DataGridTextColumn.binding (Binding(nameof itemDummy.Quantity))

こんな感じにしたほうが良いのかも。(ダミーのインスタンスが必要なのが微妙だけれど)