2

VisualBrush を介して行われるサムネイル プレビューがあります。Preview は、他の要素 RichTextBox と共に含まれる ItemsControl のものです。

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 が非表示になりますが、他のコントロールは保持されます。どんなアイデアでも大歓迎です!

4

1 に答える 1

2

ビジュアルブラシはフリーズできません。したがって、コントロールをビジュアルツリーから切り離す前に、VisualBrushからImageBrushを作成できます。これを行う方法の例を次に示します。そのVisualBrushを「フリーズ」します

于 2012-04-05T21:09:47.800 に答える