バージョン

xamDataTree 編集

xamDataTree コントロールでは、各行でデータを編集することが可能です。xamDataTree コントロールの編集を有効にするには、 TreeEditingSettings のオブジェクトの AllowEditing プロパティを True に設定します。TreeEditingSettingsOverride オブジェクトのプロパティを設定することによって、異なるノード レベルで編集を有効または無効にすることもできます。TreeEditingSettingsOverride オブジェクトは、TreeEditingSettings オブジェクトに優先します。

以下のコードは、xamDataTree で編集を有効にする方法および Products レベルで無効にする方法を示しています。

XAML の場合:

<ig:XamDataTree x:Name="MyTree">
   <ig:XamDataTree.EditingSettings>
      <ig:TreeEditingSettings AllowEditing="True"/>
   </ig:XamDataTree.EditingSettings>
   <ig:XamDataTree.GlobalNodeLayouts>
      <ig:NodeLayout Key="CategoryLayout" TargetTypeName="Category"
                     DisplayMemberPath="CategoryName"/>
      <ig:NodeLayout Key="ProductLayout" TargetTypeName="Product"
                     DisplayMemberPath="ProductName">
         <ig:NodeLayout.EditingSettings>
            <ig:TreeEditingSettingsOverride AllowEditing="False"/>
         </ig:NodeLayout.EditingSettings>
      </ig:NodeLayout>
   </ig:XamDataTree.GlobalNodeLayouts>
</ig:XamDataTree>

Visual Basic の場合:

MyTree.EditingSettings.AllowEditing = True
MyTree.GlobalNodeLayouts(1).EditingSettings.AllowEditing = False

C# の場合:

MyTree.EditingSettings.AllowEditing = true;
MyTree.GlobalNodeLayouts[1].EditingSettings.AllowEditing = false;

編集モードを開始するにはいくつかの異なる方法があります。以下の TreeEditingSettings および TreeEditingSettingsOverride オブジェクト プロパティを設定することで決定できます。

IsF2EditingEnabled - このプロパティは、F2 キーを押した時にノードが編集モードになるかどうかを指定します。

IsEnterKeyEditingEnabled - このプロパティは、Enter キーを押した時にノードが編集モードになるかどうかを指定します。

IsOnNodeActiveEditingEnabled - このプロパティは、ノードが自動的に編集モードになるかどうかを指定します。

IsMouseActionEditingEnabled - このプロパティは、以下の TreeMouseEditingAction 列挙値のいずれかに設定する必要があります。

  • DoubleClick - この値は、ダブルクリックした時にノードが編集モードになるかどうかを指定します。

  • SingleClick - この値は、クリックした時にノードが編集モードになるかどうかを指定します。

  • None - この値はノードをクリックした時に編集モードにならないように指定します。

Note

注: Esc キーを押すと編集モードをキャンセルできます。ENTER キーを押すか、エディター領域の外側でマウスをクリックすると、編集された値が確定されます。

イベント

以下のリストに示すように、xamDataTree に関連づけられたイベントが 4 つあります。これらのイベントによって、編集中にカスタム ロジックを実行できます。

Note

注: NodeEnteringEditMode などの "ing" イベントはすべてキャンセル可能です。

エディター テンプレート

TextBox は編集モードになっているノード用のデフォルト エディターで、XamDataTree または NodeLayouts オブジェクトの DisplayMemberPath プロパティで設定された値を編集することしかできません。ノードから離れたところをクリックすると、更新されます。

ただし、編集のためにユーザー独自のテンプレートを設定することもできます。これは XamDataTree または NodeLayouts オブジェクトの EditorTemplate プロパティをデータ テンプレートのインスタンスに設定することで実行可能です。DataTemplate で指定されたこのカスタム エディターの DataContext は XamDataTreeNodeDataContext です。このカスタム テンプレートを実装すれば、項目で複数値を編集できます。

編集される値にバインドされると、編集をキャンセルできるようにするために、Binding オブジェクトで UpdateSourceTrigger プロパティを Explicit に設定する必要があります。

次のコードは、このような動作の実行方法を示します。

XAML の場合:

<ig:NodeLayout Key="ChapterLayout" TargetTypeName="Book" DisplayMemberPath="Title">
   <ig:NodeLayout.EditorTemplate>
      <DataTemplate>
         <Grid>
            <Grid.RowDefinitions>
               <RowDefinition></RowDefinition>
               <RowDefinition></RowDefinition>
            </Grid.RowDefinitions>
            <TextBox Background="Red" Grid.Row="0" Text="{Binding Data.Title, Mode=TwoWay,UpdateSourceTrigger=Explicit}"></TextBox>
            <TextBox Background="Yellow" Grid.Row="1" Text="{Binding Data.Author, Mode=TwoWay,UpdateSourceTrigger=Explicit}"></TextBox>
         </Grid>
      </DataTemplate>
   </ig:NodeLayout.EditorTemplate>
</ig:NodeLayout>

ノードの削除

xamDataTree コントロールからノードを削除することもできます。次のコードで示すように、TreeEditingSettings オブジェクトの AllowDeletion プロパティを設定することで、ノードを削除することを可能にします。削除が有効になったら、DELETE キーを使用してノードを削除できます。

XAML の場合:

<ig:XamDataTree.EditingSettings>
   <ig:TreeEditingSettings AllowEditing="True"
                           AllowDeletion="True"/>
</ig:XamDataTree.EditingSettings>

Visual Basic の場合:

MyTree.EditingSettings.AllowDeletion = True

C# の場合:

MyTree.EditingSettings.AllowDeletion = true;

関連トピック