重复使用XAML路径对象 [英] Reuse path object in XAML

查看:129
本文介绍了重复使用XAML路径对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个路径(星图):

 <路径X:名称=NiceStarStrokeThickness =10行程=#FF000000StrokeMiterLimit =1数据=F1中号126.578613,11.297852大号162.373535,83.825684大号242.412598,95.456055大号184.495605,151.911133大号198.167480,231.626953大号126.578613,193.990234大号54.988770,231.626953大号68.661621,151.911133大号10.744629,95.456055大号90.783691,83.825684大号126.578613,11.297852 Z>
< Path.Fill>
<放射渐变MappingMode =绝对渐变=390.395508,448.130371中心=390.395508,448.130371半径=113.034821半径=113.034821>
< RadialGradientBrush.Transform>
< MatrixTransform矩阵=1,0,-0,-1,-263.816895,569.592773/>
< /RadialGradientBrush.Transform>
&所述;渐变停止偏移=0颜色=#FF00FF00/>
&所述;渐变停止偏置值=1颜色=#ff006736/>
< /&画笔GT;
< /Path.Fill>
< /路径>
 

现在我想复制这条道路数次(只指的是NiceStar)。我能做到这一点在纯XAML?

我可以用它一次,这样做的:

 <装饰儿童={的StaticResource星}/>
 

不过,我不能重复这一行。我的编译器说:

 指定的元素已经是另一个元素的逻辑子。首先断开它。
 

解决方案

创建样式。

 <风格X:关键=NiceStarPath的TargetType ={X:键入路径}>
    < setter属性=StrokeThicknessVALUE =10/>
    < setter属性=行程值=#FF000000/>
    < setter属性=StrokeMiterLimit值=1/>
    < setter属性=数据值=F1中号126.578613,11.297852大号162.373535,83.825684大号242.412598,95.456055大号184.495605,151.911133大号198.167480,231.626953大号126.578613,193.990234大号54.988770,231.626953大号68.661621,151.911133大号10.744629,95.456055大号90.783691 ,83.825684大号126.578613,11.297852 Z/>
    < setter属性=填充>
        < Setter.Value>
            <放射渐变MappingMode =绝对渐变=390.395508,448.130371中心=390.395508,448.130371半径=113.034821半径=113.034821>
                < RadialGradientBrush.Transform>
                    < MatrixTransform矩阵=1,0,-0,-1,-263.816895,569.592773/>
                < /RadialGradientBrush.Transform>
                &所述;渐变停止偏移=0颜色=#FF00FF00/>
                &所述;渐变停止偏置值=1颜色=#ff006736/>
            < /&画笔GT;
        < /Setter.Value>
    < /二传手>
< /样式和GT;
 

...

 <路径类型={的StaticResource NiceStarPath}/>
 

I have a Path (a star figure):

<Path x:Name="NiceStar" StrokeThickness="10" Stroke="#ff000000" StrokeMiterLimit="1" Data="F1 M 126.578613,11.297852 L 162.373535,83.825684 L 242.412598,95.456055 L 184.495605,151.911133 L 198.167480,231.626953 L 126.578613,193.990234 L 54.988770,231.626953 L 68.661621,151.911133 L 10.744629,95.456055 L 90.783691,83.825684 L 126.578613,11.297852 Z">
	<Path.Fill>
		<RadialGradientBrush MappingMode="Absolute" GradientOrigin="390.395508,448.130371" Center="390.395508,448.130371" RadiusX="113.034821" RadiusY="113.034821">
			<RadialGradientBrush.Transform>
				<MatrixTransform Matrix="1,0,-0,-1,-263.816895,569.592773" />
			</RadialGradientBrush.Transform>
			<GradientStop Offset="0" Color="#ff00ff00"/>
			<GradientStop Offset="1" Color="#ff006736"/>
		</RadialGradientBrush>
	</Path.Fill>
</Path>

Now I want to duplicate this Path several times (just refering to "NiceStar"). Can I do this in pure XAML?

I can use it once, by doing this:

<Decorator Child="{StaticResource star}" />

However, I cannot duplicate this line. My compiler says:

Specified element is already the logical child of another element. Disconnect it first.

解决方案

Create a style.

<Style x:Key="NiceStarPath" TargetType="{x:Type Path}">
    <Setter Property="StrokeThickness" Value="10"/>
    <Setter Property="Stroke" Value="#FF000000"/>
    <Setter Property="StrokeMiterLimit" Value="1"/>
    <Setter Property="Data" Value="F1 M 126.578613,11.297852 L 162.373535,83.825684 L 242.412598,95.456055 L 184.495605,151.911133 L 198.167480,231.626953 L 126.578613,193.990234 L 54.988770,231.626953 L 68.661621,151.911133 L 10.744629,95.456055 L 90.783691,83.825684 L 126.578613,11.297852 Z"/>
    <Setter Property="Fill">
        <Setter.Value>
            <RadialGradientBrush MappingMode="Absolute" GradientOrigin="390.395508,448.130371" Center="390.395508,448.130371" RadiusX="113.034821" RadiusY="113.034821">
                <RadialGradientBrush.Transform>
                    <MatrixTransform Matrix="1,0,-0,-1,-263.816895,569.592773" />
                </RadialGradientBrush.Transform>
                <GradientStop Offset="0" Color="#ff00ff00"/>
                <GradientStop Offset="1" Color="#ff006736"/>
            </RadialGradientBrush>
        </Setter.Value>
    </Setter>
</Style>

...

<Path Style="{StaticResource NiceStarPath}"/>

这篇关于重复使用XAML路径对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆