xamContextMenu™ コントロールを使用して、アプリケーションのさまざまなコントロールのためのコンテキスト依存メニューを作成します。たとえば、元に戻すまたはやり直す機能を持つ TextBox コントロールのためのコンテキスト メニューと追加または削除機能を持つ xamGrid コントロールのためのコンテキスト メニューを作成できます。
xamContextMenu コントロールをテキスト ボックスに追加する方法を学習します。完成したプロジェクトを実行してテキスト ボックスを右クリックすると、ブラウザーに以下のスクリーンショットに似たコンテキスト メニューが表示されます。
Microsoft® WPF アプリケーションを作成します。
以下の NuGet パッケージをアプリケーションに追加します。
Infragistics.WPF.Menus
NuGet フィードのセットアップと NuGet パッケージの追加の詳細については、NuGet フィード ドキュメントを参照してください。
コード ビハインドに using/Imports のディレクティブを配置するか xamContextMenu の XML 名前空間宣言を追加します。
XAML の場合:
xmlns:ig="http://schemas.infragistics.com/xaml"
Visual Basic の場合:
Imports Infragistics.Controls.Menus
C# の場合:
using Infragistics.Controls.Menus;
TextBox コントロールを、LayoutRoot という名前のデフォルトの Grid レイアウト パネルに追加します。プロシージャー コードでこれを行う場合、ユーザー コントロールの Loaded イベントを処理し、イベント ハンドラーにこのコードを配置することができます。
XAML の場合:
<TextBox Name="textBox1">
<!--TODO: ContextMenuService クラスの添付 Manager プロパティのタグを宣言します-->
</TextBox>
Visual Basic の場合:
Dim textbox1 As TextBox Private Sub UserControl_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs) textBox1 = New TextBox() Me.LayoutRoot.Children.Add(textBox1) 'TODO: ContextMenuManager オブジェクトをインスタンス化して、TextBox コントロールに添付します 'TODO: xamContextMenu コントロールのインスタンスを作成します 'TODO: MenuItem オブジェクトを xamContextMenu コントロールに追加します End Sub
C# の場合:
private TextBox textBox1;
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
textBox1 = new TextBox();
this.LayoutRoot.Children.Add(textBox1);
//TODO: ContextMenuManager オブジェクトのインスタンスを作成して、TextBox コントロールに添付します
//TODO: xamContextMenu コントロールのインスタンスを作成します
//TODO: MenuItem オブジェクトを xamContextMenu コントロールに追加します
}
XAML でこれを実行する場合に ContextMenuService クラスの Manager プロパティのタグを宣言します。ただし、コードでこれを実行する場合には、 ContextMenuManager オブジェクトをインスタンス化して、ContextMenuService クラスの静的な SetManager メソッドを使用してコントロールに添付します。
XAML の場合:
<ig:ContextMenuService.Manager>
<ig:ContextMenuManager>
<ig:ContextMenuManager.ContextMenu>
<!--TODO: ここで xamContextMenu コントロールを追加します-->
</ig:ContextMenuManager.ContextMenu>
</ig:ContextMenuManager>
</ig:ContextMenuService.Manager>
Visual Basic の場合:
Dim contextMenuManager1 As New ContextMenuManager()
ContextMenuService.SetManager(textBox1, contextMenuManager1)
'TODO: ContextMenuManager オブジェクトの ContextMenu プロパティを設定します。
C# の場合:
ContextMenuManager contextMenuManager1 = new ContextMenuManager();
ContextMenuService.SetManager(textBox1, contextMenuManager1);
//TODO: ContextMenuManager オブジェクトの ContextMenu プロパティを設定します
xamContextMenu コントロールを作成します。コードでこれを実行する場合、ContextMenuManager オブジェクトの ContextMenu プロパティを必ず設定します。
XAML の場合:
<ig:XamContextMenu>
<!--TODO: ここに XamMenuItem オブジェクトを追加します-->
</ig:XamContextMenu>
Visual Basic の場合:
Dim xamContextMenu1 As New XamContextMenu()
contextMenuManager1.ContextMenu = xamContextMenu1
C# の場合:
XamContextMenu xamContextMenu1 = new XamContextMenu();
contextMenuManager1.ContextMenu = xamContextMenu1;
2 つの XamMenuItem オブジェクトを xamContextMenu コントロールに追加します。XAML では、xamContextMenu の Items コレクションのタグを宣言する必要はありません。
最初の XamMenuItem オブジェクトの Header プロパティを「Font」に設定します。
二番目の XamMenuItem オブジェクトの Header プロパティを「Formatting」に設定します。
XAML の場合:
<ig:XamMenuItem Header="Font" />
<ig:XamMenuItem Header="Formatting" />
Visual Basic の場合:
Dim menuItemFont As New XamMenuItem With {.Header = "Font"}
Dim menuItemFormatting As New XamMenuItem With {.Header = "Formatting"}
xamContextMenu1.Items.Add(menuItemFont)
xamContextMenu1.Items.Add(menuItemFormatting)
C# の場合:
XamMenuItem menuItemFont = new XamMenuItem
{
Header = "Font"
};
XamMenuItem menuItemFormatting = new XamMenuItem
{
Header = "Formatting"
};
xamContextMenu1.Items.Add(menuItemFont);
xamContextMenu1.Items.Add(menuItemFormatting);
アプリケーションを実行します。機能を追加するために XamMenuItem オブジェクトの Click イベントを処理できます。