2012-04-05 53 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