2012-04-05 42 views
2

我有一个通过VisualBrush完成的缩略图预览。 Preview是一个ItemsControl,其中包含其他元素RichTextBox。从屏幕上的控件分离后,RichTextBox文本在VisualBrush中消失

var preview = new VisualBrush(itemsControl, ViewboxUnits = BrushMappingMode.Absolute, 
        Viewbox = Rect(controlSize), 
        Stretch = Stretch.Uniform); 

当ItemsControl的是应用程序可视化树一切的部分预览和控制自己显示得很好,但是当我从应用程序可视化树(如canvas.Remove(ItemsControl中))的RichTextBox控制成为ItemsControl中删除在预览(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,但保持其他控件!任何想法将不胜感激!

回答

2

视觉刷无法冻结。所以你可以从VisualBrush中创建ImageBrush,然后再从可视化树中分离出你的控件。下面是一个例子:“Freeze” that VisualBrush

+0

Freeze无法在VisualBrush上正常工作 – Alfa07 2012-04-06 08:11:34