思いついたのでLINQ Padでさくっと試してみた。
open System
open System.Windows
open System.Windows.Controls
module WPF =
/// 添付プロパティと値の組を作成する
let (@<<) (dp : DependencyProperty) (value : obj) = (dp, value)
/// DependencyObjectに添付プロパティをセットする
let withAProp<'T when 'T :> DependencyObject> (t : 'T) (dps : seq<(DependencyProperty * obj)>) =
dps |> Seq.iter (fun dp -> t.SetValue(fst dp, snd dp))
t
open WPF
// 依存プロパティつきのボタンを作成する
let b = withAProp
(Button(Content = "OK"))
[
Grid.RowProperty @<< 1;
Grid.ColumnProperty @<< 1;
ToolTipService.ToolTipProperty @<< "ToolTip"
]
// 価の確認
b.Content.Dump()
b.GetValue(Grid.RowProperty).Dump()
b.GetValue(ToolTipService.ToolTipProperty).Dump()実行結果は以下の通り。
OK 1 ToolTip
うん、少しすっきりかなぁ???