SSブログ

F# + Silverlight で Hello World (2) [OCaml]

XAML で定義したキャンバス上の部品に F# 側からアクセスするには Canvas の FindName メソッドを使えばいいようだ。

というわけで XAML を以下のように変更する。Greeting という名前のテキストブロックを追加したほか、MouseLeftButtonDown イベントで Page_MouseLeftButtonDown メソッドが呼ばれるように指定した。

<Canvas
   xmlns="http://schemas.microsoft.com/client/2007"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   MouseLeftButtonDown="Page_MouseLeftButtonDown"
   x:Class="SilverTest.Page;assembly=SilverTest.dll"
>
  <TextBlock x:Name="Greeting">Hello Silverlight!</TextBlock>
</Canvas>

F# のほうではイベントに呼応して FindName を使って TextBlock を探し出して内容を書き換える。

namespace SilverTest

open System;
open System.Windows;
open System.Windows.Controls;
open System.Windows.Documents;
open System.Windows.Ink;
open System.Windows.Input;
open System.Windows.Media;
open System.Windows.Media.Animation;
open System.Windows.Shapes;

type Page = class inherit Canvas
  new() = {}

  member x.Page_MouseLeftButtonDown(o : obj,  e : MouseEventArgs) =
    let canvas = o :?> Canvas in
    let text = canvas.FindName("Greeting") :?> TextBlock in
    text.Text <- "I was pushed!!"
end

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。