我有一个通过 VisualBrush 完成的缩略图预览。Preview 是一个 ItemsControl,它包含其他元素 RichTextBox。
var preview = new VisualBrush(itemsControl, ViewboxUnits = BrushMappingMode.Absolute,
Viewbox = Rect(controlSize),
Stretch = Stretch.Uniform);
当 ItemsControl 是应用程序可视化树的一部分时,预览和控件本身显示得很好,但是当我从应用程序可视化树中删除 ItemsControl(例如 canvas.Remove(itemsControl))时,RichTextBox 控件在预览中变得不可见(VisualBrush)而所有其他控件都照常显示。
public void SetActiveControl(ItemsControl newItemsControl) {
canvas.Children.Remove(currentItemsControl);
canvas.Children.Add(newItemsControl);
currentItemsControl = newItemsControl;
}
我比较了 RichTextBox 与应用程序可视化树分离前后的属性。区别在于属性 IsLoaded(在 TRUE 之前,在 FALSE 之后)和 IsVisible(在 TRUE 之前,在 FALSE 之后)。但是其他元素(例如路径)具有相同的差异,并且仍然可以正确显示在预览中。
我无法理解 canvas.Remove(itemsControl) 如何隐藏 RichTextBox 但保留其他控件!任何想法将不胜感激!