xamDataTree 編集
以下のコードは、xamDataTree で編集を有効にする方法および Products レベルで無効にする方法を示しています。
<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>
MyTree.EditingSettings.AllowEditing = True
MyTree.GlobalNodeLayouts(1).EditingSettings.AllowEditing = False
MyTree.EditingSettings.AllowEditing = true;
MyTree.GlobalNodeLayouts[1].EditingSettings.AllowEditing = false;
編集モードを開始するにはいくつかの異なる方法があります。以下の TreeEditingSettings および TreeEditingSettingsOverride オブジェクト プロパティを設定することで決定できます。
-
DoubleClick - この値は、ダブルクリックした時にノードが編集モードになるかどうかを指定します。
-
SingleClick - この値は、クリックした時にノードが編集モードになるかどうかを指定します。
-
None - この値はノードをクリックした時に編集モードにならないように指定します。
Note
|
注: Esc キーを押すと編集モードをキャンセルできます。ENTER キーを押すか、エディター領域の外側でマウスをクリックすると、編集された値が確定されます。
|
以下のリストに示すように、xamDataTree に関連づけられたイベントが 4 つあります。これらのイベントによって、編集中にカスタム ロジックを実行できます。
Note
|
注: NodeEnteringEditMode などの "ing" イベントはすべてキャンセル可能です。
|
TextBox は編集モードになっているノード用のデフォルト エディターで、XamDataTree または NodeLayouts オブジェクトの DisplayMemberPath プロパティで設定された値を編集することしかできません。ノードから離れたところをクリックすると、更新されます。
ただし、編集のためにユーザー独自のテンプレートを設定することもできます。これは XamDataTree または NodeLayouts オブジェクトの EditorTemplate プロパティをデータ テンプレートのインスタンスに設定することで実行可能です。DataTemplate で指定されたこのカスタム エディターの DataContext は XamDataTreeNodeDataContext です。このカスタム テンプレートを実装すれば、項目で複数値を編集できます。
編集される値にバインドされると、編集をキャンセルできるようにするために、Binding オブジェクトで UpdateSourceTrigger プロパティを Explicit に設定する必要があります。
次のコードは、このような動作の実行方法を示します。
<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 キーを使用してノードを削除できます。
<ig:XamDataTree.EditingSettings>
<ig:TreeEditingSettings AllowEditing="True"
AllowDeletion="True"/>
</ig:XamDataTree.EditingSettings>
MyTree.EditingSettings.AllowDeletion = True
MyTree.EditingSettings.AllowDeletion = true;