前回では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 →