重复使用XAML路径对象 [英] Reuse path object in XAML
本文介绍了重复使用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屋!
查看全文