Как использовать ресурс дважды? - PullRequest
3 голосов
/ 24 июня 2011

В моих ресурсах приложения у меня есть:

    <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);
        }

на второй итерации, я получаю ошибку:

enter image description here

Но мне там, кажется, небыть синтаксическим анализом, потому что обратите внимание, что на первой итерации нет проблем:

enter image description here

Как я могу использовать ресурс несколько раз?Я знаю, что мог бы создать этот ресурс динамически, но мне действительно нужно использовать этот ресурс.

1 Ответ

6 голосов
/ 24 июня 2011

Если вы добавите 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>

...