かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

添付プロパティをセットしたオブジェクトを作成するヘルパー関数

思いついたので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

うん、少しすっきりかなぁ???