ฉันมีมุมมองแบบต้นไม้ในมุมมอง WPF ของฉัน และฉันก็มีผืนผ้าใบด้วย ฉันกำลังทริกเกอร์เหตุการณ์ดับเบิลคลิกและส่ง ItemContainerGenerator
เป็นพารามิเตอร์ไปยังคำสั่งของฉันดังต่อไปนี้
<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>
จากนั้นฉันก็ได้รับตำแหน่งรายการ treeview ดังต่อไปนี้
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() });
}
ต่อมา MappingLines
ได้เพิ่มเป็นแหล่งที่มาของ Canvas และวาดเส้นดังนี้
<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>
คำถามของฉันที่นี่คือฉันจะวาดเส้นใหม่เมื่อรายการมุมมองต้นไม้ขยายหรือยุบได้อย่างไร ขณะนี้บรรทัดจะอยู่ที่นั่นในการประสานงานเดียวกันเมื่อฉันขยายและยุบรายการ treeview
มีข้อเสนอแนะใด ๆ เกี่ยวกับปัญหานี้หรือไม่?
Line
กับคุณสมบัติIsExpanded
ของรายการ treeview บางทีถ้าคุณทำให้มันง่ายเหมือนกับที่คุณมีโอกาสที่จะหาคำตอบได้ดีขึ้น - person Bizhan   schedule 06.01.2020Canvas
? ส่วนแผงอื่นๆ จะถูกจำกัดตามขนาดซึ่งต่างจากผืนผ้าใบ - person Bizhan   schedule 06.01.2020