F#

F#でWPF --- 階層構造表示

今回はTreeViewを利用して階層構造のデータを表示してみます。 HierarchicalDataTemplate 基本的にはDataTemplateにItemsSourceが加わったのものです。ItemsSourceに子供の要素を保持しているプロパティをバインドします。DataTemplateに関しては下記記事を…

F#でWPF --- リストボックスCommand --- 複数選択

下記記事にてリストボックスで利用できるBehaviorを作成しました。 F#でWPF --- リストボックスCommand - 何でもプログラミング今回はこれを拡張して、複数選択に対応させた実装をします。 ListBoxBehavior 単選択の時とほとんど同じです。SelectedItemを利…

F#でWPF --- リストボックスCommand

今回はListBoxに、選択されたindexを送るCommandを実装します。実装はBehaviorを利用して行います。Behaviorの詳しい内容は下記記事を参照してください。 F#でWPF --- チェックボックスCommand --- Behavior利用 - 何でもプログラミング SelectionChanged Li…

F#でWPF --- フォルダダイアログCommand

下記記事にてOpenFileDialogに対応したActionを作成しました。 F#でWPF --- ファイルダイアログCommand - 何でもプログラミング今回はフォルダを選択するダイアログに対応したActionを作成します。 作成するアプリケーション ボタンを押してフォルダダイアロ…

F#でWPF --- XAMLデザイナでサンプルデータ利用

VisualStudioに備え付けのXAMLエディタでデザインをする際、実行時に決定される可変個のコントロールを扱うのは大変です。そこで今回は、デザイン時にサンプルのViewModelを利用する方法を書いていきます。 DesignInstance 下記のようにXAMLを記述することに…

F#でWPF --- UI画像キャプチャ --- キャプチャ時VM変更

下記記事にてUI画像をキャプチャする方法を記述しました。 F#でWPF --- UI画像キャプチャ - 何でもプログラミング今回は、キャプチャ時のみに表示を変更したい場合に対応します。 実現方法 キャプチャ実行時にViewModelが公開しているキャプチャ用のViewMode…

F#でWPF --- UI画像キャプチャ

今回は、表示されているWPFコントロールを画像として保存する方法を書いていきます。F#でWPFを利用する方法は下記記事を参照してください。 F#でWPF --- ウィンドウ表示 - 何でもプログラミング 作成するアプリケーション キャプチャボタンを押すと、Gridの…

F#でWPF --- メッセージボックス --- System.Windows.MessageBox不使用

下記記事において、MVVMにおけるメッセージボックス表示の実装を行いました。 F#でWPF --- ファイルダイアログCommand - 何でもプログラミング上記記事での実装は、stringの値にバインドしているというよりは、stringの変化のトリガーに引っかけて動作してい…

F#でWPF --- 可変個のコントロール --- 型で生成するコントロールを変更

下記記事では同じ型のリストを元にコントロールを作成しました。 F#でWPF --- 可変個のコントロール - 何でもプログラミング今回は異なる型のリスト(ベースクラスのリストで、各インスタンスの型はバラバラ)を元にコントロールを作成してみます。 作成する…

F#でWPF --- 可変個のコントロール

F#でWPFプロジェクトを作成する方法は下記記事を参照してください。 F#でWPF --- ウィンドウ表示 - 何でもプログラミング 作成するアプリケーション ボタンを押す度、ランダムな位置に円シェイプを追加するアプリケーションを作成します。 コード(F#側) コー…

拡張プロパティ(F#)

F#

F#では既存の型を拡張して、プロパティを追加することができます。今回はいくつか使い方を紹介します。 Getterのみ Listを拡張してみます。ジェネリックなクラスは拡張できないので、ベースのIListを拡張します。Countの2倍の値を返すCountDoubleを実装して…

F#スクリプト

F#

F#スクリプトは、わざわざソリューションやプロジェクトを作成することなく利用できるため、とても便利です。 fsxファイル作成 F# Interactiveに直接入力しても動作しますが、fsxファイルに記述したほうがインテリセンスやデバッグを利用できるためfsxを作成…

サブフォルダを含む、フォルダ内のファイルの取得(F#)

F#

下記のようなフォルダ構造があった際に、file1.txt、file2.txt、file1_1.txtのパスを取得する関数をF#で実装します。 breadthFirstSearch 汎用的な幅優先探索を実装します。開始点と、要素から子要素を取得する関数を入力とします。Queueを用いて手続き的な…

F#でWPF --- メッセージボックス

作成するアプリケーション ボタンを押すと"Hello"のメッセージボックスが表示されるアプリケーションを作成します。 MVVMを用いない場合 下記の様なシンプルなコードになります。しかしViewが分離できていません。 button.Click |> Event.add (fun _ -> Mess…

F#でWPF --- ファイルダイアログCommand

今回はファイルダイアログを開いて選択されたパスをCommandで送る機能を実装します。この機能を実装するにあたり、Actionを利用します。 Action Behaviorと同じく、System.Windows.Interactivity.dllを利用します。Behaviorの詳細は下記記事を参照してくださ…

F#でWPF --- スライダーCommand

今回はdouble値をCommandで送るSliderを作成します。 SliderにはCommandプロパティが用意されていないため、Behaviorを作成します。Behaviorの基本は下記記事を参照してください。 F#でWPF --- チェックボックスCommand --- Behavior利用 - 何でもプログラミ…

F#でWPF --- テキストボックスCommand --- 1文字変更毎に発行

下記記事ではキーボードのフォーカスが外れた時にCommandを実行するよう実装しました。 F#でWPF --- テキストボックスCommand - 何でもプログラミング今回は1文字変更する度にCommandを実行するよう実装します。 TextChangedイベント TextBoxにはTextChanged…

F#でWPF --- テキストボックスCommand

今回はstringを送るCommandをTextBoxに追加します。 TextBoxにはCommandプロパティが用意されていないため、Behaviorを作成します。Behaviorの基本は下記記事を参照してください。 F#でWPF --- チェックボックスCommand --- Behavior利用 - 何でもプログラミ…

F#でWPF --- チェックボックスCommand --- Behavior利用

下記記事ではCommandParameterを利用してboolを渡すCommandを実装しました。 F#でWPF --- チェックボックスCommand - 何でもプログラミング今回はBehaviorという機能を利用して同じCommandを実現します。 参照追加 Behaviorを利用するには、System.Windows.I…

F#でWPF --- チェックボックスCommand

今回はチェックボックスのCommandを利用したアプリケーションを作成します。 作成するアプリケーション チェックを入れるとダイアログの背景がグレーに、外すと白になるアプリケーションを作成します。 CommandParameter チェックの状態をCommandと共に送る…

ネストしたレコードの更新 (F#)

F#

ネストしたレコードの下層のほうを更新しようとすると下記のような記述となります。本来なら上層に下層を更新するメンバー関数を用意しておくのが理想ですが、面倒な場合用に簡素な記述で更新できる関数を実装します。 type Container = { Value : int } typ…

SodiumでFunctional Reactive Programming (F#) --- 現在値の参照

現在値を参照しない例 Streamの入力があると値が100となる、初期値0のCellは以下のように記述できます。 let value = input |> Stream.mapTo 100 |> Stream.hold 0 現在値を参照する例 Streamの入力があると1ずつ増加する、初期値0のCellは以下のように記述…

SodiumでFunctional Reactive Programming (F#) --- WPF連携

下記記事ではコンソールアプリケーションにてSodiumを実装しました。 SodiumでFunctional Reactive Programming (F#) --- 導入 - 何でもプログラミング今回はSodimuをWPFのMVVMに対応させたバージョンを実装します。 全体構造 CommandをStreamに、CellをProp…

SodiumでFunctional Reactive Programming (F#) --- 導入

Sodiumのコンパイル NuGetではC#版しか取得できませんので、githubよりソースをダウンロードします。 https://github.com/SodiumFRP/sodiumF#内のSodium.slnをビルドするとSodium.dllが作成されます。 またPriority Queue.dllがNuGetから取得されます。 Hell…

F#でWPF --- Elm Architectureを利用したMVVM --- Model側のキャッシュ

下記記事で紹介いたしました構造において、Viewの差分更新は自動で行われるのですが、その他の部分は全て毎回作成することになっています。 F#でWPF --- Elm Architectureを利用したMVVM - 何でもプログラミングもし時間のかかる処理が存在する場合は毎回計…

F#でWPF --- Elm Architectureを利用したMVVM

下記の記事でMVVMを紹介しましたが、実装が冗長であるという問題がありました。 WPFにおけるMVVM - 何でもプログラミング今回は下記記事で紹介しました、簡素な記述のできるElm ArchitectureをMVVMに適用します。 Elm --- Model、View、Update - 何でもプロ…

WPFにおけるMVVM --- F#コード版

前回下記記事にて紹介しましたC#版のMVVMを、F#化したものを掲載いたします。 WPFにおけるMVVM - 何でもプログラミング実際には、冗長すぎる、mutableが頻発する、といった理由でこのままの記述方法を使うことはありません。ただ単にC#をF#に書き直したらど…

F#でWPF --- ウィンドウ表示

F# & WPFのプロジェクトテンプレートはいくつか存在するみたいですが、(F# Empty Windows App (WPF) 等)今回はコンソールアプリケーションから作成していきたいと思います。 プロジェクトの作成 Console Applicationを選択します。 参照の追加 Presentatio…