Saya memiliki tampilan pohon di tampilan WPF saya dan saya juga memiliki kanvas, saya memicu acara klik dua kali dan meneruskan ItemContainerGenerator
sebagai parameter ke perintah saya seperti di bawah ini.
<dc:Interaction.Triggers>
<dc:EventTrigger EventName="MouseDoubleClick">
<dc:InvokeCommandAction Command="{Binding TreeItemDoubleClickCommand}"
CommandParameter="{Binding ElementName=treeView, Path=ItemContainerGenerator}"/>
</dc:EventTrigger>
</dc:Interaction.Triggers>
</dc:TreeView>
maka saya mendapatkan posisi item treeview seperti di bawah ini
private void PerformDoubleClick(ItemContainerGenerator itmGenerator)
{
var selectedItem = _dirItems.SelectMany(d => d.GetAllChildren()).FirstOrDefault(c => c.IsSelected);
TreeViewItem tvii = ContainerFromItemRecursive(itmGenerator, selectedItem);
if (tvii == null) return;
TreeViewItem tvi = tvii;
GeneralTransform myTransform = tvi.TransformToAncestor(tvii);
Point myOffset = myTransform.Transform(new Point(0, 0));
//canvas.Children.Clear();
var line = new Line();
line.Stroke = Brushes.LightSteelBlue;
line.X1 = myOffset.X + tvii.ActualWidth;
line.X2 = 700;
line.Y1 = myOffset.Y + tvii.ActualHeight / 2;
line.Y2 = 300;
line.StrokeThickness = 2;
//canvas.Children.Add(line);
var fromPoint = tvii.PointFromScreen(new Point());
MappingLines.Add(new MappingLine { From = new Point(fromPoint2.X * -1.00 - 50, (fromPoint2.Y * -1.00 - 55)), To = new Point(X2, Y2), LineColor = GetRandomColor() });
}
kemudian MappingLines
ditambahkan sebagai sumber ke kanvas dan menggambar garis seperti di bawah ini.
<ItemsControl DataContext="{Binding MappingDocumentViewModel.RightPanel }" ItemsSource="{Binding MappingLines}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Line X1="{Binding From.X}" Y1="{Binding From.Y}"
X2="{Binding To.X}" Y2="{Binding To.Y}"
Stroke="{Binding LineColor}" StrokeThickness="1"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
pertanyaan saya di sini adalah bagaimana cara menggambar ulang garis ketika item tampilan pohon diperluas atau diciutkan? saat ini garis-garisnya akan berada di sana dalam koordinasi yang sama ketika saya memperluas dan menciutkan item tampilan pohon,
ada saran untuk masalah ini?
Line
ke propertiIsExpanded
item tampilan pohon. mungkin jika Anda membuatnya sesederhana itu, Anda memiliki peluang lebih besar untuk menemukan jawabannya - person Bizhan   schedule 06.01.2020Canvas
? panel lain dibatasi ukurannya, tidak seperti kanvas. - person Bizhan   schedule 06.01.2020