かずきのBlog@hatena

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

XAML

UWP Community Toolkitを使って今風?なListViewのUIを実現する

UWP Community Toolkitが、ちょっと目をはなしてる隙に1.4.1にまでバージョンアップしてました。 色々なコントロールとかが提供されているのですが、ListViewに絡むコントロールをいくつか紹介したいと思います。 インクリメンタルローディング 最近のアプリ…

一定時間やりなおしが出来るようにする

メール削除とかしたけど、一定時間取返しがきくみたいなUIがありますよね。 あぁいうのどうやるんだろうというのを考えてみました。 UWPでやってみますが、WPFでもXamarin.Formsでも基本的に同じ感じになると思います。見た目凝るのが一番難しそう。 Modelの…

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では、実行時に機能の有無を調べて対応するようになりました。これによって、メソッド…