【问题标题】:How to use a resource twice?如何两次使用资源?
【发布时间】:2011-06-24 18:04:25
【问题描述】:

在我的应用程序资源中,我有:

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

在第二次迭代中我得到了错误:

但对我来说似乎没有解析异常,因为请注意第一次迭代没有问题:

我怎样才能多次使用一个资源?我知道我可以动态创建该资源,但我需要实际使用该资源。

【问题讨论】:

    标签: c# xaml resources resourcedictionary


    【解决方案1】:

    如果将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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 2015-10-30
      • 1970-01-01
      • 2020-01-06
      • 2014-05-18
      • 1970-01-01
      相关资源
      最近更新 更多