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

かずきのBlog@hatena

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

DIコンテナのUnityのLifetimeManagerを拡張して任意のタイミングでインスタンスの破棄をする

C#

UnityのLifetimeManagerはシングルトンで管理するContainerControlledLifetimeManagerか、デフォルトの毎回newする‘PerResolveLifetimeManager‘か、スレッド単位のPerThreadLifetimeManagerが用意されています。あとマニアックなところだと、ExternallyContr…

ASP.NET CoreがVisual Studio Codeで動いたよ on Windows 10

簡単にメモっておきます。まずはdotnetコマンドがないと話しになりません。私の場合はいつの間にか(たぶんVS2015のASP.NET Coreの入れたときだと思う)入ってたのでこの手順は踏んでませんが、以下のページからSDKあたりを入れておく必要があると思います。…

PCLでHttpUtlitityのUrlEncodeとUrlDecodeを使いたい

C#

UriクラスのEscapeDataStringとUnescapeDataStringメソッドを使いましょう。 Console.WriteLine(HttpUtility.UrlEncode(s)); Console.WriteLine(Uri.EscapeDataString(s)); var encodedString = HttpUtility.UrlEncode(s); Console.WriteLine(HttpUtility.Ur…

DIコンテナのUnityで使用されるコンストラクタを指定する

C#

InjectionConstructorAttributeを使用します。指定しない場合はコンストラクタ引数の一番多いものが使われます。 例えば以下のようなケース。 public class Hoge { public Hoge(Foo foo, Bar bar) { } public Hoge(Foo foo) { } } だと、Foo foo, Bar barの…

Entity Framework Core RC2がリリースされたみたいです

blogs.msdn.microsoft.com 待ちに待ったリリースに向けてあと一歩といったところですね! UWPで使うときに必要だったおまじないも消えてるっぽい(未確認だけどドキュメントに記載されてない)ので気軽にUWPで使えるようになったっぽいです。UWPでSQLiteを使…

LINQのメソッド構文、クエリ式の構文

C#

LINQってメソッド構文とクエリ式の構文の2つがあります。どっち使います?という話ですが個人的な見解として、メソッド構文がLINQの全機能にフルアクセスできるという点でメソッド構文を使用しています。 LINQのメソッド構文とクエリ式の構文の対応は以下の…

C#で好きな機能

C#

Blogネタが尽きたので小ネタを。 C#でプログラムする時によく使う便利機能を3つ挙げたいと思います。 async/await やはりC#といったらこれですよね。 非同期処理を簡単に書ける。 blog.okazuki.jp これがない言語でのプログラミングは、結構ストレスです。コ…

JSON.NET使ってみる

C#

JObjectの使い方を勉強してみた。 var j = new JObject(); j.Add("Item1", new JObject()); j.Add("Item2", new JObject()); j.Add("Item3", new JObject()); こういう感じで Console.WriteLine(JsonConvert.SerializeObject(j)); とすることで { "Item1": {…

XamarinのAndroidアプリでReactivePropertyを使う 2016年版

随分昔に書いてますね。 blog.okazuki.jp 最近は事情も変わったので改めて書いてみようと思います。 ReactivePropertyは? Reactive ExtensionsをベースにしたMVVMの支援ライブラリです。 blog.okazuki.jp Xamarinでも使えるの? Xamarin.AndroidとXamarin.i…

Taskを返すメソッドをそのままreturnして失敗した

C#

Task HogehogeAsync()みたいなメソッドがあるとします。 そのメソッドをTask FugafugaAsync()で呼ぶときに、単発で呼ぶだけならそのままreturnしてしまいますよね。 async FugafugaAsync() { return HogehogeAsync(); } こんなノリで以下のようなメソッドで…

Reactive ExtensionsでRateLimitを実装してみる

こんな感じ??Queueにいったん詰め込んで、Scheduler上でどんどん処理していく感じ。 1つ処理をするとカウントアップして、指定時間後にカウントダウンする。 static class RateLimitExtensions { public static IObservable<T> RateLimit<T>(this IObservable<T> se</t></t></t>…

C#でユニコードの文字コードで文字を指定する

C#

2.4.1 Unicode 文字エスケープ シーケンス (C#) に書いてある通り、\uXXXXを使います。例えば幅が0のスペースのノーブレークスペースの場合は、以下のように記述します。 "\u00A0"

C言語の教科書に登場するひろ子さんをC#で書いてみよう

togetter.com ひろ子さんは、他人の身長を180㎝にしてしまう能力があるみたいです。 例えば、ひろ子さんの能力をC#のメソッドにしてしまうと以下のようになるでしょう。 using System; namespace Kowai { class Program { static void Main(string[] args) {…

FriendlyでFrameを使ったアプリをテストする その2

blog.okazuki.jp 1つ前の記事でWPFContentControlなるものをこさえてまでやった方法ですが、Friendly作者の石川さんに聞いたらさくっともっといい方法を教えてもらえました。 AppVar型にもLogicalTreeメソッドはあるのじゃよ 個人的にWPFContentControlを作…

FriendlyでFrameを使ったアプリをテストする

追記 blog.okazuki.jp この記事の内容より良い方法がありましたので上の記事に書いてます。 あと、この記事に書いたWPFContentControl足してもらえたみたいです。 元記事 という要望がありました。 WindowControlのLogicalTreeで辿ればいいや!って思ってた…

Friendlyを入門してみた

デスクトップアプリのテストを行うためのFriendlyというライブラリのハンズオンの補助講師してきた(受講者に非常に近い立ち位置で)のでちょっと試してみました。WPFの足し算アプリを用意してみた。XAMLがわかればテストできる感じなので、XAMLだけさくっと…

ReactiveProperty 2.3-preをリリースしました

www.nuget.org 今回は、Xamarin.Macへ対応するためのNuGetパッケージの定義ファイルの更新と、ReactivePropertyクラスのコンストラクタを変更して初期化時の性能を改善してみました。 そのため、結構がっつりとソースをいじってるのでPreリリースという形に…

ReactivePropertyでModelに紐づくViewModelの作り方のパターン

データの入れ物のModelに対するViewModelは大体こんな感じになるよねっていう感じのものを作ってみました。 とりあえず以下のようなイメージです。 ModelはINotifyPropertyChangedを実装した値の入れ物のクラス ViewModelはそれをラップしてVからの入力値を…

ReactiveProperty + Prism.Wpfでリストに表示されてる項目を編集するサンプルを書いてみた

github.com ListBoxに表示されてる項目を選択してボタンを押すとポップアップが出てきて編集するっていう簡単なサンプルです。

ReactivePropertyで、ViewModelのプロパティに変更があったかどうか判別できるようにしたい

プロパティの値が1つでも書き換わってたら判別したい。そういうことはありますよね? ReactivePropertyを使うと、こんな感じで実現できます。(変更があったかというフラグをリセットする機能つき) まず、ReactivePropertyに変更があったときにtrueを発行す…

Windows 10のUWPでInkCanvasを使って手書き文字認識をする

思ったより簡単だったのでメモメモ。因みにWindows 8のころはInkManager使ったりしてちょっとめんどかったです。 InkCanvasを置く 描画や消したりとかはInkCanvasにお任せです。 <InkCanvas x:Name="myInkCanvas" /> 認識処理を書く 認識にはInkRecognizerContainerを使います。RecognizeAsync</inkcanvas>…

RxとReactivePropertyを使って、WPFでUnidirection Data Flowを実現するを真似してみた

ありがたいことに最近ReactivePropertyを勧めたら使い始めて頂けました。 qiita.com このコードを大げさに書いたらどうなるかなぁというのでやってみました。 ということでModel部分。 なんかきっかけがあるタイミングで、インクリメントし続けるだけの奴。 …

競技プログラミングの問題をしてみた

C#

chomado.com @chomadoさんの参加したという競技プログラミングの問題を解いてみました。 たまには頭の体操。 B問題 英小文字からなる 12 個の文字列 S1, S2, …, S12 が入力されます。 これらの文字列のうち、文字 r が含まれるものの個数を数えてください。 …

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

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

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

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

Prism 6.0のRegionBehaviorについて書きました

github.com

Universal Windows Platform appのAppService

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

IgniteUIのigGridでテンプレート列を使う

ASP.NET MVCで使う方法をメモっとく。 @using Infragistics.Web.Mvc @{ ViewBag.Title = "Index"; } <script type="text/javascript"> function format(x) { return x + "歳"; } </script> <h2>Index</h2> @(Html.Infragistics() .Loader() .CssPath(Url.Content("~/Content/css")) .ScriptPath(Url.Content("~…

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

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

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

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

Universal Windows Platform appでタイトルバーに戻るボタンを出す方法 その2

Universal Windows Platform appでタイトルバーに戻るボタンを出す方法 - かずきのBlog@hatenaokazuki.hatenablog.com 先日、UWP appのタイトルバーに戻るボタンを出す方法を書きましたが、ストアのアプリを見てると戻れないときは戻るボタン出さないように…

Universal Windows Platform appでタイトルバーに戻るボタンを出す方法

UWP appで一部アプリにタイトルバーに戻るボタンが出てるものがあります。 例えばストアのアプリとかそうなってます。 これをやるには、SystemNavigationManagerクラスを使います。 Appクラスの起動処理のどこかにこの1行を足します。 SystemNavigationMana…

Prism for UWP(仮)を見てみた

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

ReactivePropertyでViewModelに紐づくModelを差し替えるときのパターン

んー? 変更通知プロパティのメンバを持つModelで、そのメンバがViewModelのReactivePropertyに接続されてて、そのModelのインスタンス自体を差し替えたい時ってどうすればいいんだ・・・?— たき(=゚ω゚)ノ (@taky_xi2) 2015, 6月 20 という呟きを見つけたので…

暇なので手抜きheadコマンドをC#で

C#

using System; using System.IO; using System.Linq; namespace head { class Program { static void Main(string[] args) { if (!args.Any()) { Usage(); return; } string fileName = null; int lineNumber = 10; if (args.Length == 1) { fileName = args…

C# 6.0時代の変更通知プロパティの書き方

C#

VS2015 RC時点の情報に基づいて書いています XAML系のアプリを書くときに必須となるINotifyPropertyChangedインターフェースを実装した上での、変更通知機能を持ったプロパティがあります。こいつの実装がめんどくさい&文字列指定だとダサいみたいな理由か…

ReactiveProperty v2.2をリリースしました

ReactivePropertywww.nuget.org v2.2 破壊的変更 ObserveElementReactiveProperty 拡張メソッドを削除しました。 Add ObserveElementObservableProperty 拡張メソッドを追加しました。 概要 ObserveElementReactivePropertyメソッドが、ReactivePropertyの方…

7つのサンプルプログラムで学ぶRxJavaの挙動のコードをC#にポーティング

2記事続けて人の記事にのっかった記事になります。 7つのサンプルプログラムで学ぶRxJavaの挙動 - クックパッド開発者ブログtechlife.cookpad.com 解説は元記事がとても丁寧なのでそちらを一読することをお勧めします!C#固有の話とかあったらこちらで補足し…

Windows 10 TPのUniversal application platformで別アプリ起動時にパラメータを渡す

Windows 10 TP時点の情報です 以下の記事の続きです。 Windows 10 TPのUniversal application platformで別アプリを起動する - かずきのBlog@hatenaokazuki.hatenablog.com アプリを起動するだけでは、連携としては弱いので値を渡したいと思います。起動時に…

Windows 10 TPのUniversal application platformで別アプリを起動する

Windows 10 TP時点の情報です 今までもURIでアプリを起動とかってできたんだっけ? Windows 10 TPでは、相手アプリを指定して起動するとかいろいろ強化されています。起動のしかたは簡単。起動対象のアプリのFamilyNameと起動するためのプロトコルがわかって…

WindowsストアアプリでUIの要素の高さとかが取れるタイミングで一回だけ処理をしたい

Loadedだとまだなんですね。 public MainPage() { this.LayoutUpdated += this.MainPage_LayoutUpdated; } private void MainPage_LayoutUpdated(object sender, object e) { this.LayoutUpdated -= this.MainPage_LayoutUpdated; // ここで処理をする } ふ…

Windows 10 TPのUniversal application platformでのAppService

Windows 10 TP時点の情報です 超参考 Windows 10 Preview のAppService を作ってみる - tmytのらくがきtmyt.hateblo.jp Windows 10から、AppServiceというアプリのバックグラウンドでサービスを立ち上げることが出来るようになりました。サービスを提供する…

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

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

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…

Reactive Extensionsのはじめかた

最近Reactive Extensionsがバズってきてて、2年以上前に公開したReactive Extensionsのv1のメソッドを大体網羅したPDFが割と参照されてます。 Reactive extensions入門v0.1 from 一希 大田 www.slideshare.net 個人的な入門は、そこに全部書いたので今更感も…

DataGridComboBoxColumnのItemsSourceのバインド方法

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

ReactiveProperty v2.1をリリースしました。

BlogのコメントでReadOnlyReactiveCollectionをReadOnlyObservableCollectionから生成できないのは何故?という意見が来てたので、確かに、と思って追加しました。 ReactiveProperty NuGet Gallery | ReactiveProperty 2.1.0 v2.1.0 追加 ReadOnlyReactiveCo…

ReactiveProperty 2.0.0-pre4をリリースしました

ReactiveProperty NuGet Gallery | ReactiveProperty 2.0.0-pre4 さっきpre3リリースしましたが、バージョンアップです。 メソッド名の変更 先ほど追加したEventToReactiveCommand用のReactiveConverterとDelegateConverterクラスのConvertメソッド名をConve…

ReactiveProperty v2.0.0-pre3をリリースしました

ReactiveProperty NuGet Gallery | ReactiveProperty 2.0.0-pre3 今回は以下の変更を含んでます。 CountNotifyerのINotifyPropertyChangedの実装 CountNotifyerクラスがINotifyPropertyChangedインターフェースを実装してCountプロパティの変更通知を受け取…

めとべや東京 #7 でReactivePropertyのLTしてきました

ReactivePropertyの紹介してきました!! 資料公開しておきます。