申し訳ありませんが、この質問は単純すぎますが、コントロールの背景を作成する方法を考え出すのは難しいです。アプリのパフォーマンスが向上することを期待しています。スキニングコントロールのバックグラウンド - より良いパフォーマンス?
私は9種類のコントロールを持っています。それらのすべてには背景があります。背景は、画像、その他のコントロール、またはその両方で構成されています。これらの背景には別の背景があります。
このようなパワーポイントは、スライド、スライドレイアウト、およびスライドマスターがこの順番で継承されています。私は9つのスライド/コントロールを持っています。
- 最初の3つのコントロールは、同じ "コントロールレイアウト" を持っている(のが ControlLayout1それを呼びましょう)。 ControlLayout1は、その一部をControlMaster1から取得します。
- 2番目の3つのコントロールも同じコントロールレイアウトですが、最初のコントロールとは異なる です。それを ControlLayout2としましょう。また はControlMaster1から継承しています。
- 3つのコントロールの最後のセットが再び異なります。私たちは電話することができます ControlLayout3。しかし今度は、彼らは別のマスターから継承する - ControlMaster2。
現在、各コントロールでは、毎回すべてのXAMLを個別に書き出しています。私はこれらの各項目のそれぞれにこれらを書かない方法がなければならないと考えています。理想的には、私が作成したいのは、再利用できるXAMLのセットです。
ここではいくつかの擬似XAMLです:
そしてどこかControlLayouts ため(私は知らない、Application.Resourcesなど、または他の場所)
<Canvas x:Name="ControlLayout1">
<MyMasterBackground (ControlMaster1)/>
</Canvas>
<Canvas x:Name="ControlLayout2">
<MyMasterBackground (ControlMaster1)/>
<TextBox Text="The Control 2">
</Canvas>
<Canvas x:Name="ControlLayout3">
<MyMasterBackground (ControlMaster2)/>
<TextBox Text="The Control 3">
</Canvas>
そしてについてコントロールマスター
<Canvas x:Name="ControlMaster1">
<Canvas.Background>
<ImageBrush ImageSource="/Images/image1.jpg" />
</Canvas.Background>
</Canvas>
<Canvas x:Name="ControlMaster2">
<Canvas.Background>
<ImageBrush ImageSource="/Images/image2.jpg" />
</Canvas.Background>
<TextBox Text="Control Master 1">
</Canvas>
ControlLayoutsとControlMasterは一度定義すると決して変更する必要はなく、静的です。
これらをすべて1つの場所に配置してXAMLを再利用することができれば、もっと小さなXAPを持つだけでなく、ControlLayoutsが自動的にBitmapCachedなどを取得するため、アプリケーションでパフォーマンスが向上することを期待しています。
まず、上記を実装するための良い戦略がありますか(ControlLayoutsとマスターにはコードビハインドはありません)。第2に、Control1、Control2などの読み込みでパフォーマンスが向上しますか?最後に、純粋なユーザーコントロール(つまり、コードが残っている)の場合は、それがパフォーマンス向上につながりますか?
ありがとうございます!
静的なものをBitmapCachedにするには、手動で設定する必要があります。特定のものは[自動キャッシュされた](http://msdn.microsoft.com/en-us/library/ff602285(v=v9.aspx).aspx)ですが、私の経験では手動で設定すると大きな違いが生じますが、特に、UI要素をたくさん移動して不気味なパフォーマンスを見ているときは特にそうです。 –