かずきのBlog

C#やJavaやRubyとメモ書き

目次

Blog 利用状況

ニュース

わんくまBlogが不安定になったため、前に書いてたはてなダイアリーにメインを移動します。
かずきのBlog@Hatena
技術的なネタは、こちらにも、はてなへのリンクという形で掲載しますが、雑多ネタははてなダイアリーだけに掲載することが多いと思います。
コメント
プログラマ的自己紹介
お気に入りのツール/IDE
プロフィール
経歴
広告
アクセサリ

書庫

日記カテゴリ

[C#][WPF]コマンドですよ その9「実行したくない時もある」

前回:http://blogs.wankuma.com/kazuki/archive/2008/03/24/129252.aspx

今までコマンドを無条件に実行するようにしてた例ばかりだったけど、そういう時ばかりじゃないのが世の中ってもんだ。
ということで、前回の例を少しだけ拡張して、CheckBoxにチェックがあるときだけ「閉じる」コマンドが実行されるようにしてみようと思う。

さて、コマンドの初回くらいでICommandのメンバあたりについて説明したようなしてないような気がする。その時にCanExecuteというものの存在についても紹介してたような気がする。
つまり、CanExecuteがfalseならコマンドを実行しないという手はずになってる。

RoutedCommandではどうなっているのかというと、CommandBindingの時点でCanExecuteイベントを紐付けることになってる。
このイベントの引数のCanExecuteRoutedEventArgsのCanExecuteプロパティにtrue/falseを設定することで、コマンドの実行/実行しないの制御ができます。

ということで、XAML側にCheckBoxを1つ追加して、CanExecuteイベントをComandBindingに追加した。

  1. <Window x:Class="WpfDefCommand.Window1" 
  2.     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  3.     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  4.     Title="こまんど その8" Height="250" Width="250"> 
  5.     <Window.CommandBindings> 
  6.         <!-- Closeコマンドが発行されたらClose_Executedを呼びます --> 
  7.         <!-- 実行可能かどうかは、Close_CanExecuteで判断します --> 
  8.         <CommandBinding Command="Close" Executed="Close_Executed" CanExecute="Close_CanExecute" /> 
  9.     </Window.CommandBindings> 
  10.     <DockPanel> 
  11.         <Menu DockPanel.Dock="Top"> 
  12.             <MenuItem Header="ファイル(_F)"> 
  13.                 <!-- このメニューを押すとCloseコマンドを発行します --> 
  14.                 <MenuItem Command="Close" /> 
  15.             </MenuItem> 
  16.         </Menu> 
  17.         <!-- 閉じていいかどうかを指定するためのチェックボックス --> 
  18.         <CheckBox Name="canClose" Content="閉じる" /> 
  19.     </DockPanel> 
  20. </Window> 

C#側のコードは、すごく単純です。純粋にCheckBoxにチェックがあるかないかを見てCanExecuteプロパティにtrue/falseを入れてます。(??演算子が目新しい?)

  1. using System.Windows;  
  2. using System.Windows.Input;  
  3.  
  4. namespace WpfDefCommand  
  5. {  
  6.     public partial class Window1 : Window  
  7.     {  
  8.  
  9.         public Window1()  
  10.         {  
  11.             InitializeComponent();  
  12.         }  
  13.  
  14.         private void Close_Executed(object sender, ExecutedRoutedEventArgs e)  
  15.         {  
  16.             // 自分自身を閉じます  
  17.             this.Close();  
  18.         }  
  19.  
  20.         private void Close_CanExecute(object sender,  CanExecuteRoutedEventArgs e)  
  21.         {  
  22.             // チェックがついてたら実行可能にします  
  23.             e.CanExecute = canClose.IsChecked ?? false;  
  24.         }  
  25.     }  

ここまで出来たら後は実行!

チェックが入ってないときは閉じるメニューはグレーになってる。
 imageimage

チェックを入れてるときは、閉じるメニューがクリックできる。
imageimage

投稿日時 : 2008年3月24日 0:58

Feedback

# re: [C#][WPF]コマンドですよ その9「実行したくない時もある」 2008/03/24 1:00 かずき

うお~コード部分が2つになってる!?
Windows Live Writerでは1つなのにorz
修正すると、XMLのタグの部分が大きく崩れるからそのまま放置しとこう…

# [C#][WPF]コマンドですよ その10 「バインド?」 2008/03/26 23:30 かずきのBlog

[C#][WPF]コマンドですよ その10 「バインド?」

# [C#][WPF]コマンドですよ その10 「Command + Binding」 2008/03/26 23:38 かずきのBlog

[C#][WPF]コマンドですよ その10 「Command + Binding」

# welded ball valve 2012/10/18 23:41 http://www.jonloovalve.com/Full-welded-ball-valve-

I like this web blog so much, saved to fav. "Nostalgia isn't what it used to be." by Peter De Vries.

# sacs longchamp 2012/12/14 23:05 http://www.soldesacslongchamp.info/category/sacs-l

Thus, our shelves find yourself filled with stuffs that we like.

# sacs longchamps 2012/12/15 16:08 http://www.sacslongchamp2012.info

i compliment you within your great written content and good topic products.

# burberry uk 2012/12/16 4:50 http://www.burberryuksale.info/category/handbags-b

It's ACCEPTABLE. You can still be a bebo star =)

# sac longchamp le pliage soldes 2012/12/16 22:17 http://www.saclongchampachete.info/category/longch

this is normally something we have never previously read.

# burberry femme soldes 2012/12/17 8:21 http://www.sacburberryecharpe.fr/category/burberry

Our admins employ a sharp eye and sharper senses - and additionally our Very best Comments online community enjoys a good read. Come play with us!

# 安いエルメス 2012/12/17 21:35 http://www.hermespairs.info/category/エルメス時計

keep up the good operate!

# sac michael kors 2012 2012/12/18 22:33 http://sac-michael-kors.webnode.fr/blog/

I have never looked inside Sennheisers and even am in need of new tote.

# burberry bags 2012/12/19 14:00 http://burberryukoutlets.wordpress.com/category/bu

Ill be backpedal the track to look into other posts that.

# michael kors 2012/12/21 7:07 http://sac-michael-kors.webnode.fr/blog/

I take advantage of earbuds out of the house because of the portability, even though I prefer over this ear.

# tt6262.com 2013/03/04 5:06 http://tt6262.com/

Because any individual doesn‘g love you profession would like them to successfully,doesn‘g convey they don‘g love you of they want. tt6262.com http://tt6262.com/

# pari street 2013/03/15 9:09 http://www.a88.fr/

Enjoy is most likely the sole satisfied together with suitable answer to the problem in peoples continuation. pari street http://www.a88.fr/

# casquette monster 2013/03/16 7:23 http://www.b44.fr/

Put on‘testosterone sample so difficult, the optimal objects appear after you minimum , believe those to. casquette monster http://www.b44.fr/

# casquette new era 2013/03/16 10:09 http://www.a44.fr/

Anywhere int he planet could one person, nevertheless to at least one man could the whole world. casquette new era http://www.a44.fr/

# casquette supreme 2013/03/17 10:12 http://www.b77.fr/

Preceptor‘to you could try overtime, the most beneficial important things can be purchased whenever you a minimum of look forward to these. casquette supreme http://www.b77.fr/

# destockchine 2013/03/24 0:43 http://d77.fr/

Absolutely adore is without a doubt fragile during entry into the world, but it really grows deeper as we grow older with the price of perfectly feasted. destockchine http://d77.fr/

# destockchine 2013/03/25 5:14 http://c99.fr/

Authentic a friendly relationship foresees the requirements of different and not just exalt you'll find it acquire. destockchine http://c99.fr/

# usine23 2013/03/25 5:14 http://e55.fr/

Someone that you choose to obtain along with provides will probably be purchased in the individual. usine23 http://e55.fr/

# casquette monster 2013/04/07 6:07 http://www.promolaredoute.fr/

Precise relationship foresees the needs of various other rather of exalt it will be very. casquette monster http://www.promolaredoute.fr/

# brandalley 2013/04/07 12:04 http://rueree.com/

When you really need an excellent human resources of your own definitely worth, count up friends. brandalley http://rueree.com/

# Laredoute 2013/04/07 19:02 http://ruezee.com/

During riches my acquaintances are aware of our business; when difficulty young children and can my acquaintances. Laredoute http://ruezee.com/

# chaussea 2013/04/08 5:43 http://ruemee.com/

Tend not to consult your trusty felicity to just one significantly less fortunate enough rather than all by yourself. chaussea http://ruemee.com/

# TzUtVbZdWB 2014/08/04 4:28 http://crorkz.com/

4PsshD I truly appreciate this article post.Thanks Again. Awesome.

# kRcvDIsMzKilWs 2014/08/05 6:04 http://crorkz.com/

XWepwd I truly appreciate this article.Thanks Again. Keep writing.

タイトル  
名前  
Url
コメント