多数の子を持つ標準の WPF ツリービュー アイテムがあります。プログラムでツリーを作成するときは、選択したイベント ハンドラーを親アイテムと子アイテムに追加します。私が見つけたのは、子アイテムの選択されたイベントが発生して処理された後、親イベントが発生することです。これの問題は、選択したアイテムに基づいてデータグリッドを作成することです。したがって、子アイテムを選択した後は常に、データグリッドは親アイテムの選択にリセットされます。
このアイテムが正常なのか、それとも私が何か間違ったことをしているのか、そしてそれを修正する方法を誰かが説明してください.
さらに情報が必要な場合はお知らせください。
イベント ハンドラーの接続:
//parent
TreeViewItem tvi = new TreeViewItem();
tvi.Header = str;
tvi.Selected += CoreSupplierSelected
//child
TreeViewItem tvi = new TreeViewItem();
tvi.Header = str;
tvi.Tag = resinSystems.Values[i];
tvi.Selected += CoreResinSystemSelected;
ハンドラー:
private void CoreSupplierSelected(object sender, RoutedEventArgs e)
{
TreeViewItem item = e.OriginalSource as TreeViewItem;
MaterialSelectionData thicknessData = editInterface.GetCoreThicknessData(new List<object>() { item.Tag }, null);
List<string> columnNames = thicknessData.DisplayFieldTitles;
columnNames.Insert(0,"");
DataTable dt = GUICommon.DatableConverter.ToDataTable(thicknessData.DisplayData, columnNames);
dtgCores.ItemsSource = dt.AsDataView();
dtgCores.Columns[0].Visibility = System.Windows.Visibility.Collapsed;
}
private void CoreResinSystemSelected(object sender, RoutedEventArgs e)
{
TreeViewItem item = e.OriginalSource as TreeViewItem;
GX3MaterialSelectionData thicknessData = editInterface.GetCoreThicknessData(new List<object>() { ((TreeViewItem)item.Parent).Tag }, new List<object>() { item.Tag });
List<string> columnNames = thicknessData.DisplayFieldTitles;
columnNames.Insert(0, "");
DataTable dt = GUICommon.DatableConverter.ToDataTable(thicknessData.DisplayData, columnNames);
dtgCores.ItemsSource = dt.AsDataView();
e.Handled = true;
dtgCores.Columns[0].Visibility = System.Windows.Visibility.Collapsed;
}