foreach (var nd in xnn.SelectedNodes) { nd.Visibility = System.Windows.Visibility.Collapsed; }
このトピックはノードをネットワーク レイアウトから削除する方法を示し、ノードをデータ ソースから削除する方法を説明します。
トピックは以下のとおりです。
このトピックの例はノードを NetworkNodeLayout から、およびデータ ソースから削除する方法を示します。
開始するには、 xamNetworkNode を使った作業の開始トピックをお読みください。このチュートリアルでは「はじめに」トピックからのコードを開始点として使用しています。
データ ソースはノードを削除する機能を実装するために INotifyPropertyChanged インターフェイスを実装していなければなりません。これは、変更が下位のデータ ソースに伝えられ、更新が実行されるために必要です。
ノードを選択し SelectedNodeCollectionChanged イベント中でノードの表示プロパティを「Collapsed」に設定するだけでノードは削除されます。これはノードをデータ ソースから削除するわけではありません。選択されたノードをビューで非表示にします。
C# の場合:
foreach (var nd in xnn.SelectedNodes) { nd.Visibility = System.Windows.Visibility.Collapsed; }
Visual Basic の場合:
For Each nd As var In xnn.SelectedNodes nd.Visibility = System.Windows.Visibility.Collapsed Next
ノードの削除はノードを選択した後キーボードの Delete キーを押すことに対応した KeyDown ハンドラーを実装することで達成することもできます。
C# の場合:
private void xnn_KeyDown(object sender, KeyEventArgs e) { if (e.Key == Key.Delete) { if (xnn.SelectedNodes.Count > 0) { xnn.SelectedNodes[0].Visibility = System.Windows.Visibility.Collapsed; } } }
Visual Basic の場合:
Private Sub xnn_KeyDown(sender As Object, e As KeyEventArgs) If e.Key = Key.Delete Then If xnn.SelectedNodes.Count > 0 Then xnn.SelectedNodes(0).Visibility = System.Windows.Visibility.Collapsed End If End If End Sub
次の画像はノードがネットワーク レイアウトから削除された時の結果を示します。
最初のレイアウト:
図 1
ノード 8 の Visibility を「Collapsed」に設定
図 2
ノード 5 の Visibility を「Collapsed」に設定ノード 5 に接続されたノード (6 と 7) は直接接続されているノードが非表示であるため、それらが切り離されて表示されることに注意してください。
図 3
xamNetworkNode は変更通知によりデータ モデルからノードを削除するためにノードのコレクションの変更をリスニングします。コントロールにはノードのコレクションに行われた変更が通知され、データモデルの変更を反映するよう更新されます。データ オブジェクトはデータ ソースが更新されるよう INotifyPropertyChanged インターフェイスを実装しなければなりません。
次の例は先頭ノードをデータ ソースから削除する例を示します。
C# の場合:
ObservableCollection<NodeModel> nMod = xnn.ItemsSource as ObservableCollection<NodeModel>; nMod.RemoveAt(0);
Visual Basic の場合:
Dim nMod As ObservableCollection(Of NodeModel) = TryCast(xnn.ItemsSource, ObservableCollection(Of NodeModel)) nMod.RemoveAt(0)