Toolbar for WPF/Silverlight
コマンドチュートリアル (Silverlight のみ)

Silverlight 5 は、ButtonBase クラスから派生された任意のオブジェクトで ICommand インターフェイスをサポートしています。コントロールの Command プロパティを通して、ICommand を実装するオブジェクトに、C1ToolbarButton などの任意のボタンを関連付けることができます。 ICommand インターフェイスはサポートされていますが、Silverlight は組み込みの実装を提供していません。ComponentOne for Silverlight には、C1Command と C1ToolbarCommand の2つの実装が含まれているため、自分で実装を記述する必要はありません。

C1Command クラスは C1.Silverlight アセンブリに含まれています。C1ToolbarCommandC1Command を拡張し、C1.Silverlight.Toolbar アセンブリに含まれています。これには、ツールバーに関連して、ラベルとイメージのプロパティがいくつか追加されています。

以下の手順では、C1Toolbar を使用したコマンドの使用方法を示しています。

C1ToolbarCommand の使用

  1. 新しい Silverlight アプリケーションを開くか、作成します。

  2. デフォルトの Grid 要素に2つの RowDefinition を追加し、最初の行の高さを自動にします。次のようになります。

    XAML
    コードのコピー
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition />
    </Grid.RowDefinitions>
    
  3. 最初の行に挿入する C1Toolbar を追加します。

  4. 2行目に TextBox を追加します。

  5. 次の C1ToolbarCommand をユーザーコントロールリソースに貼り付けます。次のようになります。

    XAML
    コードのコピー
    <UserControl.Resources>
        <c1:C1ToolbarCommand x:Key="cmdClear" LabelTitle="Clear Text" 
         LargeImageSource="/Resources/delete.png" />
    </UserControl.Resources>
    

    このコマンドは、TextBox からコンテンツをクリアするために使用されます。C1ToolbarCommand には LargeImageSource と SmallImageSource を指定できますが、必須ではありません。
  6. 次の XAML を貼り付けて、C1Toolbar にタブ、グループ、ボタンを組み込みます。

    XAML
    コードのコピー
    <c1:C1Toolbar Name="c1Toolbar1">
        <c1:C1ToolbarTabControl>
            <c1:C1ToolbarTabItem Header="Home">
                <c1:C1ToolbarGroup Header="Application">
                    <c1:C1ToolbarButton c1:CommandExtensions.Command="{StaticResource cmdClear}" />
                </c1:C1ToolbarGroup>
            </c1:C1ToolbarTabItem>
        </c1:C1ToolbarTabControl>
    </c1:C1Toolbar>
    

    ここでは、c1:CommandExtensions.Command 添付プロパティを前述のコマンドに設定しています。C1ToolbarButton には、継承された Command プロパティもあることに注意してください。C1Commands の使用時には、添付プロパティ CommandExtensions.Command を使用してコマンドを設定することをお勧めします。
  7. ページ内の “textBox1”という名前のツールバーの下に1つの TextBox を追加します。

  8. 次に、次のコードを使用して、ページの初期化後にコマンドを登録する必要があります。

    C#
    コードのコピー
    // コマンドのメソッドを登録します
    CommandManager.RegisterClassCommandBinding(GetType(), 
    new CommandBinding((C1ToolbarCommand)Resources["cmdClear"], Clear, CanClear));
    // 登録されたコマンドを実行できるかどうかをチェックします
    CommandManager.InvalidateRequerySuggested();
    

    C1.Silverlight.CommandManager は、コマンドの登録に関連するユーティリティメソッドを提供します。ここでは、Clear と CanClear のイベントハンドラを渡します。
  9. 次の Clear イベントハンドラと CanClear イベントハンドラを貼り付けます。これらは、コマンドのロジックを実行します。

    C#
    コードのコピー
    private void Clear(object sender, ExecutedRoutedEventArgs e)
    {
        textBox1.Text = "";
    }
    private void CanClear(object sender, CanExecuteRoutedEventArgs e)
    {
        if (textBox1.Text.Length > 0)
        {
            e.CanExecute = true;
        }
        else
            e.CanExecute = false;        
    }
    
  10. Silverlight では、登録されたコマンドが機能するかどうかをコードで明示的にチェックする必要があります。TextBox TextChanged イベントに次のコードを追加します。

    C#
    コードのコピー
    private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
    {
        CommandManager.InvalidateRequerySuggested();
    }
    
  11. サンプルを実行します。これで、C1Toolbar のコマンドと C1Command を使用して、テキストボックスのコンテンツをクリアできるようになりました。