3

私がオブジェクトを持っているとしましょう:

<Grid x:Key"FooGrid>
   <!--Content Here-->
</Grid>

そして、私は通常、次のようなものでそれを参照します:

<ContentPresenter Content="{StaticResource ResourceKey=FooGrid}"/>

これは機能しますが、もう一度呼び出すと、最初の使用が削除され、要求された2番目の使用に移動します。

明らかに、リソースを呼び出す方法に問題があります。Styleが作成できるものと同様に、オブジェクトの一意のインスタンスが必要な場合、これを行うためのより良い方法は何でしょうか?

私はスタイルを使用しますが、私が理解しているように、スタイルは定義されたコンテンツをサポートしていません。

4

3 に答える 3

6

x:Shared属性を使用して、これを行うことができます。例:

<Grid x:Key"FooGrid" x:Shared="False"> 
   <!--Content Here--> 
</Grid> 
于 2012-07-26T22:31:41.183 に答える
1

すみません、私の英語が下手なら私。

これは、要素が他の要素の論理的な子であるために発生します。ただし、ContentPresenterはContentControlではないため、このアプローチを実行します。

ContentControlで同じことを試みると、ランタイムエラーが発生します。

参照: http: //msdn.microsoft.com/en-us/library/system.windows.controls.contentpresenter.content

Att、Allan

于 2012-07-26T23:10:57.890 に答える
0

「小さな羊」の答えを使って追加 x:Shared="False" しましたが、VisualBrushの構造が台無しになったので、コードに追加して VisualBrush vb = Application.Current.Resources["MyBrushName"] as VisualBrush; VisualBrush newVB = vb.Clone(); 、努力を正当化しました。 のみを使用.Clone()しても機能しません。

于 2017-10-24T08:36:54.163 に答える