在我的应用程序资源中,我有:
<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>
我想将这个边框添加到堆栈面板,如:
Border temp = new Border();
temp = (Border)FindResource("border1");
temp.Name = "bar" + i;
stackPanel1.Children.Add(temp);
这很好用。唯一的问题是我想添加该边框的两个实例。因此我把它放在一个循环中:
for (int i = 0; i < 10; i++)
{
Border temp = new Border();
temp = (Border)FindResource("border1");
temp.Name = "bar" + i;
stackPanel1.Children.Add(temp);
}
在第二次迭代中我得到错误:
但对我来说,似乎没有解析例,因为注意第一次迭代没有问题:
我怎样才能多次使用资源?我知道我可以动态创建该资源,但我需要实际使用该资源。
答案 0 :(得分: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>