閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

WPFでコントロールを入れ子にしてみる

WPFのコントロールは自由に入れ子にすることができるので、例えばコンボボックスの中にコンボボックスを入れるなどといった事も簡単に行えます。

コンボボックスの各要素をチェックボックスにしてみます。

f:id:wata_d:20080220085630p:image

#light 
#I @"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0"
#r @"WindowsBase.dll"
#r @"PresentationCore.dll"
#r @"PresentationFramework.dll"

open System
open System.Windows
open System.Windows.Controls
open System.Windows.Media

type NestComboBox = class
    inherit ComboBox as base
    
    new () as this = {} then
        let checkA = new CheckBox()
        checkA.Content <- "A"
        this.AddChild(checkA)
        
        let checkB = new CheckBox()
        checkB.Content <- "B"
        this.AddChild(checkB)
end

type HelloWindow = class
    inherit Window as base
    
    new () as this = {} then
        this.Title <- "Hello"
        let combo = new NestComboBox()
        do combo.Width <- 50.0
        do combo.Height <- 20.0
        this.AddChild(combo)
        this.Width <- 100.0
        this.Height <- 100.0
end

#if COMPILED
[<STAThread()>]
do 
    let app =  new Application() in
    app.Run(new HelloWindow()) |> ignore
#endif

クラスを定義するのが面倒になってきたので、画面をXAMLで書けるようにしたいです。