2011-06-24 10 views
3

:これは正常に動作しますリソースを2回使用するには?私は自分のアプリケーションのリソースで

  Border temp = new Border(); 
      temp = (Border)FindResource("border1"); 
      temp.Name = "bar" + i; 
      stackPanel1.Children.Add(temp); 

<Application.Resources> 

    <Border x:Key="border1" BorderBrush="{x:Null}" BorderThickness="0" Height="159" Width="5" > 
     <Border.Background> 
      <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
       <GradientStop Color="#FFFC0C0C" Offset="0" /> 
       <GradientStop Color="#63FF0000" Offset="0.999" /> 
       <GradientStop Color="#6AFE0000" Offset="0.048" /> 
      </LinearGradientBrush> 
     </Border.Background> 
    </Border> 

</Application.Resources> 

私のようなスタックパネルにその境界線を追加したいとします。唯一の問題は、その境界の2つのインスタンスを追加したいということです。 2回目の繰り返しで

  for (int i = 0; i < 10; i++) 
     { 
      Border temp = new Border(); 
      temp = (Border)FindResource("border1"); 
      temp.Name = "bar" + i; 
      stackPanel1.Children.Add(temp); 
     } 

私はエラーを取得する:したがって、私は、ループ内にあることに置かれている

enter image description here

しかし、私のためのノートどのようにそこにパースexeptionがあるようには思えません最初の繰り返しで問題ありません:

enter image description here

どのように私はいくつかのリソースを使用することができます時間?私はそのリソースを動的に作成できることは知っていますが、実際にリソースを使用する必要があります。

答えて

6

あなたのリソース定義にx:Shared="false"を追加した場合、それが動作するはずです:

<Border x:Key="border1" x:Shared="false" BorderBrush="{x:Null}" BorderThickness="0" Height="159" Width="5" > 
    <Border.Background> 
     <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
      <GradientStop Color="#FFFC0C0C" Offset="0" /> 
      <GradientStop Color="#63FF0000" Offset="0.999" /> 
      <GradientStop Color="#6AFE0000" Offset="0.048" /> 
     </LinearGradientBrush> 
    </Border.Background> 
</Border> 

関連する問題