読者です 読者をやめる 読者になる 読者になる

かずきのBlog@hatena

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

WPFでWindowが閉じられたときにViewModelの後始末メソッドを呼ぶ

そういう動きをするビヘイビアを作ればOKです。こんな感じで。 public class ViewModelCleanupBehavior : Behavior<Window> { protected override void OnAttached() { base.OnAttached(); this.AssociatedObject.Closed += this.WindowClosed; } private void Windo</window>…

Xamarin.Formsで画面レイアウトを作るためのレイアウトコントロールの必要最低限

Xamarin.Formsで思い通りのレイアウトを組みたい。 そんな時には、レイアウト系のコントロールを押さえておくといいです。 公式ドキュメント Layouts - Xamarin Layoutコントロール Xamarin.Formsでは、複数のコントロールを配置するときには、あらかじめ定…

アニバーサリーアップデートでのコンパイル時データバインディングの強化点 Functions in binding paths

なんて訳すんでしょうね。バインディングパス内関数とか? アニバーサリーアップデートと共に降ってきたBuild 14393のSDKですが、こいつをMin versionに設定したプロジェクトでのみコンパイル時データバインディングの新機能が有効になります。つまりアニバ…

InkToolbarを使おう

ついに来ましたアニバーサリーアップデート!!目玉はなんといっても定規ですよね!! そんな定規を簡単にアプリに組み込むことができるInkToolbarというコントロールがあります。使い方は簡単です。InkCanvasとセットで画面において、TargetInkCanvasプロパ…

WPFのBehaviorをStyleで使う方法

昔書いた記事にコメントがついたので改めてやってみました。 blog.okazuki.jp 最近はGitHubがあるのでコードを共有するのが楽でいいですね。 こんなクラスを用意してやります。BehaviorをCloneして追加してやる感じです。Cloneして渡さないと同じBehaviorの…

WPFでTextBoxに入力エラーがないときだけ押せるボタンを実現したい

1つ前でVMでやるのがおすすめですよって書いたけどどうやるの?っていう記事です。 blog.okazuki.jp 今回はReactivePropertyの組み込みのエラーチェック機能を使ってやってみます。まず。intしか受け付けないValidationAttributeを作ります。 using System.C…

WPFでTextBoxに入力エラーがないときだけ押せるボタンをXAMLで実現したい

WPFでint型をバインドしたTextBoxとかって入力エラーがあると赤色枠がついていい感じにしてくれますよね。ただしViewModelからは、そのエラーは検知できない。 でも、ボタンは押せないようにしたい。そんなときは、こんなXAMLで実現できます。

Metro.cs#2 WPFからみるMVVM で WPFから他プラットフォームへの展開というテーマで話してきました #metrocs

doc.co 資料を公開しておきます。今回からSlideShareじゃなくてdocs.comにしてみました。 Modelをしっかり作ろうぜ!っていうことでちょびっと話してきました。 試行錯誤した結果なので、これが正しいかはわからないですが…。まぁ一例ということで。

Xamarin.FormsでListViewのItemTemplate内のボタンにPageにバインドされているVMにあるCommandをバインドする方法

こういうの悩みますよね。例えば以下のようなViewModelがあるとします。こいつのAlertCommandに選択項目を渡したいというケースです。 using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; using System.Linq; u…

Windows FormsからWPFやUWPに来て戸惑うこと

Buttonに文字を設定するのにTextじゃないということ。 Contentプロパティに設定しないといけないというやつですね。 ふむふむ、コンテンツね…って覚えたらTextBlockはTextプロパティなのかよ!という理不尽な扱いを受けてしまいます。 これの見分け方なんで…

WPF 4.5入門をKindleに公開しました

SlideShareで無料で公開してるPDFをKindleで1205円で公開を始めました。 www.amazon.co.jp Kindleでどうしても読みたいという方や、これくらいなら払ってやってもいいかという人はぽちってくれると純粋に私が喜びます。 SlideShareのほうは、引き続き公開し…

XAMLとC#によるUniversal Windows Platform アプリ開発っていうのをKindleストアに放流しました #uwpdev_jp #windev_jp

www.amazon.co.jp 目次はこんな感じ。細かいテクノロジについて解説はしてないけど、アプリの作り方の参考になればと思います。 2. 本書について 1 2.1. 対象プラットフォーム 1 2.2. コードを打ち込むうえでのTips 1 3. Universal Windows Platformとは 1 3…

Universal Windows Platform appでのコンパイル時データバインディング(x:Bind)

UWP appでは、従来のデータバインディングに加えてコンパイル時データバインディングというものが追加されています。コンパイル時データバインディングは、名前の通り従来は実行時にやっていた色々な処理をコンパイル時に行ってしまうというものです。これに…

Universal Windows Platform appのAppService

Windows 10 TPのUniversal application platformでのAppService - かずきのBlog@hatenaokazuki.hatenablog.com 上記はInsider Preview時代の記事ですが作り方は試してみたところ変わっていませんでした。Package.appxmanifestがGUIで作れるようになってたの…

Universal Windows Platform appのListViewで追加されたアイテムに自動でスクロールさせたい

ということをしたいというケースがありました。 やり方としては、ItemsSourceがINotifyCollectionChangedだったら追加されたCollectionChangedを購読して追加された要素に対してScrollIntoViewしてやるだけです。 とりあえず、こういうBehaviorを作ってListV…

Universal Windows Platform appでモバイルの時のみアプリバーを出す

電話のときはAppBarを出して、PCのときは出したくない!そんなときもあるでしょう。 ということでやり方です。 AnalyticsInfo.VersionInfo.DeviceFamilyでデバイスファミリーが取得できます。この値が"Windows.Mobile"のときはモバイルで動いてるということ…

Prism for UWP(仮)を見てみた

Prismの中でうごめいているUniversal Windows Platform app対応版Prismについてちょっとリポジトリをのぞいてみました。基本的に、Prism for Windows Runtimeの流れを汲む感じで、使い方に差は無さそうです。 大きな変更点 一番大きな変更点は、MvvmAppBase…

左右にスワイプするとにょきっとメニューが生えてくるものをUWPで(WP8.1でもWinStoreAppでも同じ)

こんな感じのUserControlを用意します。

Widthのアニメーションが動かない

XAML使ってWidthのアニメーションをしようとDoubleAnimation使ったら動かない!!という問題にぶちあたりました。解決策は、DoubleAnimationのEnableDependentAnimationをTrueにするということ。メモメモ。

フォームはラベルの配置場所で使いやすさが全然変わる!ユーザーが利用しやすいフォームを徹底考察をXAMLでやる

フォームはラベルの配置場所で使いやすさが全然変わる!ユーザーが利用しやすいフォームを徹底考察coliss.com こういうフォームって実現大変そう?WinFormsだと死にますね。WPFとかだとテンプレートをいじればOK。 こういう添付プロパティと public class In…

Universal Windows Platform appでCommandBarを任意の場所に置く

Windows Insider Preview 10074 + VS2015 RC時点の情報です PageのTopAppBarプロパティやBottomAppBarプロパティに置くのがセオリーなCommandBarですが、こいつは任意の場所に置くことができます。意味があるかはわかりませんが以下のようにListViewの要素に…

Universal Windows Platform appのCommandBarに任意のコントロールを置く

Windows 10 Insider Preview 10074 + VS2015 RC時点の情報です PageクラスのBottomAppBarやTopAppBarプロパティに設定できるCommandBarですが、こいつは単純にPrimaryCommandプロパティやSecondaryCommandプロパティだけでなくContentプロパティも持っていて…

Universal Windows Platform appでレスポンシブ対応

Windows Insider Preview 10071 + VS2015 RC時点の情報です 悪夢のようなレスポンシブ対応。UWP appでは色々な画面サイズに対応するのが望ましいです。UWP appのレスポンシブ対応ですが大きく分けて2つのポイントがあると思います。 SplitViewの表示切替 コ…

Windows 10 TPのUAPのSplitViewで閉じてるとき、開いてるときで見た目を変えたい

開いてるか閉じてるかでVisualStateを切り替えれることで実現できます。VisualStateの切り替え自体は、Behaviorを使って簡単に実現できます。ということでやってみましょう。

Windows 10 TPのUAPでSplitViewを幅に応じて出したりひっこめたり

なんか、Windows 10 TPのアプリってこんなのが多い雰囲気です。 ある程度幅があると左にメニューがあって。 幅を狭めるとひっこむ。んでクリックすると出てくる。 似た雰囲気のを作ってみました。

Windows 10 TPのFontIconの使い方

まぁ、これに限った話じゃないけど。 IMEパッドでフォント名と16進の値を割り出したらあとは&#XXXX;とかく。例えばSegoe UI SymbolのE0F4の場合は以下のような感じ。 <FontIcon FontFamily="Segoe UI Symbol" Glyph="&#xE0F4;"></FontIcon>

Windows 10 TPのUAPのRelativePanel

Windows 10 TP時点の情報です。 2015/04/17 追記 RelativePanel.Above等でBindingをしてますが、ここはコントロール名だけでも動きます。 Windows 10 TPのUAPでは、RelativePanelという新しいレイアウト用のPanelが提供されています。これを使うと複雑なレイ…

Windows 10 TPでバックボタンのように電話固有機能などを記述する方法

Windows 10 TP時点の情報です Windows 8.1までのユニバーサルアプリでは#if ~ #endifを使ってコンパイル時に有効、無効を切り替えるスタイルでした。Windows 10 TPのUAPでは、実行時に機能の有無を調べて対応するようになりました。これによって、メソッド…

Windows 10 TPのUAPのVisualStateManagerの新しい機能

Windows 10 TP段階の情報です Windows 10 TPのUAPのVisualStateManagerが強化されてました。簡単に言うと、以下の2点が追加されています。 画面のサイズに応じてVisualStateを自動で切り替える機能 プロパティを設定するためのSetter機能 順番に見ていきます…

Windows 10のUniversal appのSplitView

Windows 10 TP段階の情報です Windows 10 TPのUniversal appの新しいコントロールにSplitViewというのがあります。こいつは、左からニョキっと出てくるメニューを持ったような画面を作るのに便利なコントロールです。 XAMLの構造的には単純です。 <SplitView> <SplitView.Pane> </SplitView.Pane> </SplitView> 例え…

Windows 10のUniversal appでBehaviorを使う方法

2015/03/25 Windows 10 TP段階の情報です 某所でビヘイビア何処?って聞いたらリリースノート嫁とのことで…。 @M3rken they're supported, just need a bit manual work, see #win10 Tools' release notes - https://t.co/cMrC3TnYdB— Andrej Tozon (@andrej…

DataGridComboBoxColumnのItemsSourceのバインド方法

久しぶりのWPFネタです。小ネタ。 DataGridComboBoxColumnクラスを使うと、簡単にDataGridにComboBoxを設定できます。しかし、DataGridComboBoxColumnクラスのItemsSourceプロパティをBindingしようとすると、BindingのSourceがWindowのDataContextではなく…

ストアアプリでListViewに左右のスワイプ処理を追加するという記事が面白かったのでReactivePropertyを使って書いてみた

元ネタ めとべや東京 #7で登壇してきましたその1 ストアアプリでListViewに左右のスワイプ処理を追加する - shinji-japanのブログ めとべや東京 #7で登壇してきましたその1 ストアアプリでListViewに左右のスワイプ処理を追加する - shinji-japanのブログ 面…

Xamarin.Formsにインテリセンスがきた!!

ソファーでうたたねしてて目覚めたらこんな記事が! 【速報】Visual Studio でも Xamarin.Forms の XAML で IntelliSence が使えるように!(3rd Party の拡張機能ですが) - Xamarin 日本語情報 【速報】Visual Studio でも Xamarin.Forms の XAML で Intelli…

ユニバーサルWindowsアプリ入門をSlideShareにアップしました

Amazonで500円で売ってたら悲しい結果になったので3か月ほど前に引き上げて、時効がきたのでSlideShareにアップしました。 Universal windows app入門 from 一希 大田 (adsbygoogle = window.adsbygoogle || []).push({}); Universal windows app入門 これも…

WPF4.5入門のPDF

最後までまとめてアップしました。ひと段落。 WPF4.5入門

WPF4.5入門 その62「まとめ」

Windows Presentation Foundation 4.5入門は、ひとまず終了です。WPFの入門書が少ないというか絶無な日本で少しでも、これからWPFをやろうと思うひとの助けになれば幸いです。 この中で使用しているコードは一部をのぞき以下のGitHubで管理しています。 http…

WPF4.5入門 その61「データバインディングを前提としたプログラミングモデル その2」

前回のアプリケーションはシンプルすぎてModelがありませんでしたが、今度はシンプルな四則演算アプリケーションでModelまで含んだコード例を示したいと思います。MVVMの基本クラスは、Prism.Mvvmのクラスを使用します。 Modelの作成 Modelはなるべくプレー…

WPF4.5入門 その60「データバインディングを前提としたプログラミングモデル」

WPFでは、強力なデータバインディングを活かした設計パターンとしてModel View ViewModelパターンというアプリケーションを設計するうえでの定石となる設計パターンがあります。Model View ViewModelパターンはMVVMパターンと略されます。MVVMパターンは、WP…

WPF4.5入門 その59「Behaviorの自作」

BehaviorやTriggerとActionを使用することで、簡単なロジックがRAD環境で構築できることがわかりました。ここでは、ありもののBehaviorを使うのではなく自作のBehaviorやTrigger/Actionを作成する方法について示します。Behaviorは、コードビハインドに何回…

WPF4.5入門 その58「Behavior」

WPFの標準部品ではないですが、Blend SDK for WPFに同梱されているBehaviorという部品があります。BlendはVisual Studioに同梱されているため、基本的に標準でついていると考えていいライブラリです。Behaviorは、TriggerとAction(WPFの同名の機能とは別物…

WPFのDataGridの左上のボタンの色を変えたい

プロパティとかでさくっとはいかないものなんですね。 DataGridの左上のボタンは{ComponentResourceKey ResourceId=DataGridSelectAllButtonStyle, TypeInTargetAssembly={x:Type DataGrid}}なので、その名前のKeyを持ったButtonのStyleを定義してやればいけ…

#めとべや 東京 #6で発表してきました

アプリ作者特集ということで、滅多にアプリ作らない私ですが、某所で作ってるアプリについて話してきました。発表資料を公開します。 某rss収集アプリ from 一希 大田

WPF4.5入門のPDFを更新しました

WPF4.5入門で書き続けてるWordファイルをPDF化してSlideShareにアップしました。 前回アップしたときよりも80ページちょい増えています。 WPF4.5入門 残りあと少しの予定ですが、とりあえず今の進捗ということで。

AppBarがあることを教えてくれるバーの作り方

というサンプルコードをコードレシピにアップしました。 AppBarがあることを教えてくれるバーの作り方 in C#, XAML for Visual Studio 2013 意外と簡単ですね。

ユニバーサルWindowsアプリでPrismとReactivePropetyを使った状態で中断処理へ対応する

Json.NET使えば意外と簡単にできました。Json.NET偉大。 ユニバーサルWindowsアプリでPrismとReactivePropetyを使った状態で中断処理へ対応する in C# for Visual Studio 2013

Prism for Windows RuntimeでFileOpenPickerを出す方法

といってもPrismは、FileOpenPickerを出す機能を提供してくれないので自前で作る必要があります。今回は、その自前で作る例として。 Windows ストアアプリでMVVMパターンでFileOpenPickerの出し方 in C#, XAML for Visual Studio 2013

Prism for Windows Runtimeを使ったODataの更新アプリサンプル

どうだろう? Prism for Windows Runtimeを使ったODataの更新アプリサンプル in C#

ユニーバサルWindowsアプリのPrism for Windows RuntimeでViewのマッピングとViewModelのマッピングのカスタマイズ方法

Prism for Windows Runtimeでは、標準でViewの型はViews名前空間におかないといけないとか、ViewModelはViewModels名前空間に{Viewの型名}ViewModelで置かないといけないとかルールを持っています。 実はこのルールは別のものに置き換えることが可能です。と…

ユニバーサルWindowsアプリのPrism for Windows Runtimeで中断処理への対応

中断処理ってめんどくさいですよね…。ということで楽に対応するためのコード例をコードレシピにアップしました。 ユニバーサルWindowsアプリのPrism for Windows Runtimeで中断処理への対応 in C# for Visual Studio 2013