12/15(土)に第4回まどべんよっかいちを開催しました。 今回は「Windows Phone SDK 8.0でのアプリ開発」として、 7.5からの違いで注意すべき点を中心に発表しました。 Windows Phone 8で追加された機能の例は、このブログで順に紹介していこうかと思います。 また、XAMLやコードビハインドの書き方など、基本的な開発方法も復習できればと考えています。 スライドはこちらです。

Windows Phone 8は、Windows 8と一部のAPIが共通なので、 Windows Phone SDKが公開される前から期待してた機能がありました。 しかし、公開されたAPIリファレンスを見て、 その期待があっという間に崩れ去った…それは、ローミング機能。 Windows 8ストアアプリでは、複数のPC・スレート間でアプリケーションの情報を共有して、 状態を同期させることができます。これはローミング機能と呼ばれて、 例えば、デスクトップPCで読みかけの電子書籍を、外に持ち出したスレートPCで続きを読むってことができる訳です。 このWindows 8ストアアプリのローミング機能は、 :::C# Windows.Storage.ApplicationData.Current.RoamingSettings.Values[“LastPage”] = 10; のようにWindows.Storage.ApplicationDataクラスを経由して、Read More →

WP7アプリでLive Connectを使う前に、 「Live SDKのインストール」と「クライアントIDの取得」の準備が必要です。 Live SDKのインストール Live ConnectのSDKは[dev.live.com][http://dev.live.com/]から取得できます。 このLive Connect Developer Centerから”Downloads”を辿ると、次のリンクがあります。 Download the Live SDK: SDKをインストールするMSIファイル Get the CodeRead More →

前回紹介したLive SDK、これまではConnectでDevelper Preview版が 公開されていたのですが、12月3日にv5.0がリリースされています。 v5.0リリースのアナウンスが、公式ブログの"Inside Windows Live"の こちらの記事にあります。特にSkyDriveのAPIについて、Windows Phone での使い方が載っているので参考になります。 SkyDrive APIs for Docs and Photos—now ready to cloud enableRead More →

Windows PhoneのMangoから、Windows Liveを始めとしたクラウドと同期した情報の1つであるカレンダーのイベント情報やアドレス帳の連絡先情報にアクセスできるようになりました。例えば、イベント情報の場合、Microsoft.Phone.UserData.Appointmentsクラスを使って以下のようにアクセスします。 #!C# Appointments app = new Appointments(); Observable.FromEventPattern<AppointmentsSearchEventArgs>(app, “SearchCompleted”) .ObserveOnDispatcher() .Do(p => { var query = p.EventArgs.Results .OrderBy(keyRead More →

OneNoteのノートからブログに登録するためには、以下のように行います。 ノートを表示して、ファイル⇒送信⇒ブログ とメニューを選択する Wordが起動する。ブログを登録してなければ登録する 発行する Wordにブログを登録するとき、Blog Engine.NETであれば以下のように設定します。 HTML中のspanタグによるフォントの問題は、Wordでテキストを全選択してフォントを いじることで多少は緩和されるけど、完全には解決されないのでそれが難点かな。 ただ、この方法を使えばOneNoteからブログに直接持って行けて、 画像のアップロードなど面倒な作業がないので、 ノートにまとめた勉強結果をブログにあげやすくなるかもしれません。

前回ではContextMenuのItemTemplateにMenuItemを含めると、 項目を選択してもコンテキストメニューが閉じない問題がありました。 MenuItemでなくTextBlockを使うと表示にも選択時の動作も問題ないのですが、 メニュー項目を選択したときのイベントハンドラ、もしくはCommandを設定できる 場所がありません…ないはずです。もし私の思い違いならご指摘ください。 #!XML <toolkit:ContextMenuService.ContextMenu>     <toolkit:ContextMenu ItemsSource=”{Binding MenuItems}” IsZoomEnabled=”False”>         <toolkit:ContextMenu.ItemTemplate>             <DataTemplate>                 <TextBlock Text=”{Binding Text}”/>             </DataTemplate>         </toolkit:ContextMenu.ItemTemplate>     </toolkit:ContextMenu> </toolkit:ContextMenuService.ContextMenu>Read More →

前回の続きです。 MenuItemのIEnumerableをContextMenuのItemsSourceに バインドすることで一応狙った通りに動作したのですが、 ViewModelにコントロールのMenuItemが入るのはどうも気持ち悪いので、 違う方法を考えてみます。 まず、メニュー項目を定義したPOCO(ContextMenuItemDefinitionクラス)の IEnumerableをContextMenuのItemsSourceにバインドします。 ContextMenuItemDefinitionクラスは、とりあえず項目名(Text)を定義しておきます。 #!C# public partial class MainPage : PhoneApplicationPage { public MainPage() { InitializeComponent();Read More →

Windows Phone ToolkitのContextMenuのサンプルコードでは #!XML <toolkit:ContextMenuService.ContextMenu> <toolkit:ContextMenu> <toolkit:MenuItem Header=”Item1″/> <toolkit:MenuItem Header=”Item2″/> <toolkit:MenuItem Header=”Item3″/> </toolkit:ContextMenu> </toolkit:ContextMenuService.ContextMenu> というように、MenuItemで明示的にメニュー項目を定義している場合をよく見ます。 今回、以下の条件を満たすためにContextMenuのItemsSourceを使う方法を試していましたが、 すっかりはまっていたので、その過程をまとめてみます。 ListBoxの各要素をTap&Holdすることでコンテキストメニューを表示させる 複数の画面から利用されるため、ListBoxと付随するコントロールをUserControlとしてまとめる コンテキストメニューを画面によって変更する必要があるRead More →

2011/4/30の開発メモから WP7の標準のApplicationBarはSilverlightの要素でない(FrameworkElementでない)ため、 選択されたときの処理をViewModelのコマンドではなく、Viewのコードビハインドに記述する必要があります。 今開発しているWP7アプリはMVVMパターンにできる限り沿うようにしているため、 なんとかViewModelのコマンドとして処理を記述できないか調べていたのですが、ここに バインド可能なApplicationBarのラッパーが公開されていました。 How to have binding on the ApplicationBar ApplicationBarを持ったラッパークラスにDependencyPropertyを持たせることで、 プロパティをバインド可能にするアイデアです。 これを使ってViewModelのコマンドでメニュー選択時の処理を記述できるようになったのですが、 Blendで"Cannot clear the iconRead More →