かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

WinRT

ユニバーサルWindowsアプリでコード共有の方法などあれこれ

花粉がつらい今日この頃です。 Sharedプロジェクト まずは基本です。Universal Windows appでは、SharedのプロジェクトにおいたコードはWindowsストアアプリとWindows Phone アプリで共有されます。 このときXAMLもC#も共有されます プラットフォーム固有のX…

ユニバーサルアプリのプロジェクトでページやクラスを追加しようとしたときにシステムエラーが出た場合の対処法

システムエラーというダイアログと、詳細なエラーログは、ここに出したよっていうダイアログが出て既存のソースはいじれるけど、新規追加ができないという悲しい状態になりました。 なんか一時フォルダ的なのを消してやろうと思って以下のフォルダを消したら…

Universal Windows appで同じページで電話とパソコンの見た目を切り替える方法

といったらVSMしかないでしょう。強引に#if~#endifで。 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.InteropServices.WindowsRuntime; using Windows.Foundation; using Windows.Foundatio…

ストリーミングのAPIにPostでアクセスするとき

HttpClientのPostAsyncだとStreamを全部読み終わるまで帰ってこないみたいです。 そんなAPIって何?っていうとTwitterのこれとかがそうみたいです。 POST statuses/filter | Twitter Developers そんなときはPostAsyncじゃなくて、もう一段抽象度の低いSendA…

Twitterにログインするまでの道のり(OAuthなんて嫌いだ!)

いい時代になりました。 id:neueccさんの、AsyncOAuthを使えば簡単にTwitterの認証を突破できる…。が!!Twitter初心者なんで使い方がよくわからなかったのでメモっておきます。 アプリの登録 Twitterの開発者向けサイトでログインします。 Twitter Develope…

Windows 8.1でもNavigateメソッドの引数に渡せる型は決まってる

SuspensionManagerやPrismのSessionStateManagerがページの遷移の履歴を中断状態時に復元するときにFrameクラスのGetNavigationStateに依存しているのでNavigateメソッドでページ間で引き渡しできる型は以下のものだけです。 string char numeric GUID 本当…

Windows 8.1 Update Pro + ADでサイドロード可能に!?

これはうれしい。 Windows 8.1 Update: Sideloading Enhancements クラシックUIと新しいUIがシームレスになったWindows 8.1 Update - PC Watch ADがなくても100$ですむってありがたい。

ユニバーサルアプリで国際化対応

ユニバーサルアプリで、Sharedプロジェクトで共有可能なのはC#やXAMLだけではありません。リソースも共有できます。Stringsフォルダにja-JPというフォルダとen-USというフォルダを作って、その中にResources.reswというファイルを作ります。 Hoge.Shared en-…

Prism for Windows RuntimeをUniversal appで使えるようにしてみました

Prism for Windows Runtimeって個人的に結構気に入ってて、Universal appでも使いたい…!と思うのですが、いかんせんフットワークが重く感じてしまうんですよね、Prismのチーム。なのでUniversal appが発表されて数日でPrismも対応しました!とかいう感じは…

Visual Studio 2013 Update 2 RCでプロジェクトテンプレートのフォルダ構成が変わった

今までWindows ストアアプリのプロジェクトテンプレートやアイテムテンプレートを追加しようと思ったら以下のフォルダにつっこんどけばOKでした。 ドキュメントフォルダ\Visual Studio 2013\Templates\ProjectTemplates\Visual C#\Windows Store アイテムテ…

Windows ストアアプリで引っ張って更新(未完成)

エロリジェクトで有名なしんじさんが引っ張って更新の方法をBlogに書かれてました。 ストアアプリでListBoxを引っ張って更新 - shinji-japanのブログ ただ、この方法だとUIの仮想化が働かないような気がするんだけどどうだろう?ということで、これとは別に…

Universal Windows appを見てみた

先日、//build/のキーノートで個人的には一番ヒットだったUniversal Windows appが気になったので、早速Windows 8.1 Updateを入れてVisual Studio 2013 Update 2 RCを入れて試してみました。既に拡張機能からUniversal Windows appのサンプルコードもインス…

GridViewの選択色をデータに応じて変える方法

コードレシピにサンプルをあげました。データによって選択時の色を変える方法です。以下のようなイメージになります。 GridViewの選択時の色をデータに応じて変える方法 in C#, XAML for Visual Studio 2013

ボタンのダブルクリックを抑止したい

前回は、ControlTemplateで頑張りましたが、今回はBehaviorにしてみました。個人的には、こっちのほうが好きですね。Behaviorの設置忘れがあったときにチェックするのがめんどくさそうですが…。 using Microsoft.Xaml.Interactivity; using System; using Sy…

ボタンのダブルクリックを抑止したい

決済ボタンとかみたいに二重で走ると困る処理は、基本サーバーサイドでがっちりガードするのが基本ですが、クライアント側でも二重で走らないように、ボタンを押せなくするというのはユーザーに変なエラーメッセージを出さないという目的のためには、やって…

VisualStateManagerでの状態切り替えがAppBarにも効くか試してみた

結論 効きました。 サンプル 動作 AppBarの一番右のボタンを押すとボタンが3個になったり2個になったり切り替わります。 これはアプリ内に定義しているVisualStateで制御しています。 内容 BlendでVisualStateを以下のような感じに定義しています。 VSMでは…

ObservableCollectionとReadOnlyObservableCollectionの同期

ReactivePropertyのAPIに依存してますが、こういうのを用意しておけばいい感じ?? public static class ObservableCollectionExtensions { public static IDisposable ConnectToReadOnlyCollection<TType, TResult>( this ObservableCollection<TType> self, out ReadOnlyObservabl</ttype></ttype,>…

Visual Studioからデザイン時のDataContextを設定する方法

今までは、Blendのデータタブから設定するか、手書きXAMLするしかないと思ってました。ですが、今日Visual StudioのBindingのダイアログを開いてよく見てみると… DataContextがマークアップで設定されていません。 デザイン時のDataContextは、オブジェクト…

Windows ストア アプリのプレーンなプロジェクトテンプレート

Windows ストアアプリのプロジェクトを作るときに、標準のテンプレートで一番プレーンなやつを選ぶとCommonフォルダの中のクラスは生成されません。 あとから、基本ページを追加したら作成されるんですがApp.xaml.csにSuspensionManagerを使った復元処理とか…

WindowsストアアプリプログラミングTipsというサイト

日本初のWindows ストアアプリのプログラミングのTips集としてまとまったものといったら以下の本なのは自明なんですが・・・。 Amazon.co.jp: Windowsストアアプリ開発のレシピ110: 大田 一希, 和田 健司, 津守 優: 本 使えるTipsもあるとは言えWindows 8を…

複数ListBoxから1つしか選択できないようにする

WindowsストアアプリのListBoxやListViewやGridView(つまりSelectorコントロールを継承したクラス)を複数画面に置いたときに、1つしか選択できないようにする方法のサンプルコードをコードレシピにアップしました。 複数のListBox(GridView, ListView等のS…

ListView(ListBoxも)で単一選択モードのときに項目を追加したときの挙動を変えたい

ListViewのSelectionModeをSingleにした状態で、先頭に要素を追加したりすると、勝手に選択項目にスクロールしてしまいます。 場合によっては嬉しいのかもしれないですが余計な動作と感じることもあるので、OFFにしたい…!と思って調べたら、そういうプロパ…

Windowsストアアプリでデザインモードかどうか知りたい

知ってしまえばなんてことはない。 DesignMode.DesignModeEnabled | designModeEnabled property (Windows) if (Windows.ApplicationModel.DesignMode.DesignModeEnabled) { // デザイン時の処理 } まあ、コードからサンプルデータを機械的に作りたいときと…

GridViewで縦スクロール・横スクロールを切り替える

世間は、Windows Azureの日本リージョンのオープンでにぎわってます・・・!そんなところにふつーのWindows ストア アプリネタです! 久しぶりにコードレシピです。縦長の表示のときと、横長の表示のときとでVisualStateManagerとStyleの差し替えを使って、…

現在押されているキーと修飾キーを取得する

ぱぱっと取れるものなのかしら。と思ってみたら若干めんどくさかった。 現在押されているキー Window.Current.CoreWindowのGetKeyStateで指定したキーが押されたかどうかわかるので、VirtualKey全走査すればいいのか?修飾キーあたり排除してFirstOrDefault…

GridViewの項目でタップしたときのアニメーションを要素によって無効化したり有効化したるする方法

先日、酢酸先生(id:ch3cooh393)に、タップしたときのアニメーション無効化する方法ないの?って聞かれたので、全部無効化してしまいました。コードレシピにコードをあげてます。 Windows 8.1のストアアプリのGridViewでタップ時のアニメーションを抑止する方…

Windows ストアアプリ開発の土台作り

Windows ストア アプリの開発で、今始めるうえで一番無難に便利にはじめれる個人的な考えを書いてみます。 選択するフレームワーク Prism for Windows Runtime(Windows 8.1版) patterns & practices: Prism for the Windows Runtime - Home MS公式のライブラ…

StringInfoのSubstringByTextElementsがWindowsストアアプリでは使えない

がりっちさんに4バイト文字の𩹉(とびうお)を送り付けて、がりっちさんが作ってるTwitterクライアントの文字列処理をばぐらせて遊んでいたら、𩹉(とびうお)問題という名前がつきました。 𩹉(とびうお)問題 - がりらぼ StringInfoクラス使えば便利メソッド…

Windows 8.1用のPrism for Windows Runtime

最近ウォッチしてなかったので気づいてなかったのですが、Windows 8.1に対応したPrism for Windows Runtimeが出てたみたいです。 MSDN Blogs Developing a Windows Store business app using C#, XAML, and Prism for the Windows Runtime (Windows) NuGetで…

Windows ストアアプリのページ間で共通の見た目を作りたい その3

先日は、軽く作っただけですが、ちょっと改良してみようと思います。 Windows ストア アプリでページ間で共通の見た目を簡単に作りたい - かずきのBlog@hatena ページのタイトルをPageTemplateコントロールのプロパティで設定できるようにする 昨日の段階で…