在Windows 8商店应用程序中重复使用XAML路径的问题

3

我正在尝试重复使用我在Windows 8商店应用程序中为图标制作的XAML <Path />,但是当我尝试重复使用它们时,它从未显示?

例如,最初的实例都很好,我的“打勾/打叉”路径使用此XAML代码呈现:

<Path x:Name="TickGlyph" Style="{StaticResource TickGlyph}" Fill="#FF008500"
  Grid.Column="1" Width="48" Height="48" Margin="24,0,4,0" />
<Path x:Name="CrossGlyph" Style="{StaticResource CrossGlyph}" Fill="#FF850000"
  Grid.Column="1" Width="48" Height="48" Margin="24,0,4,0" />

只要我重复使用类似于TickGlyph1的名称,我的后续路径就会变成空白。有人能解释一下这是怎么回事吗?或者这是 Windows Store 应用程序 XAML 的一些奇怪限制吗?
我的基础样式如下:
<Style x:Key="TickGlyph" TargetType="Path">
  <Setter Property="Data" Value="F1 M 45.12,5.49L 21.255,40.8L 20.4525,40.8L 0,23.2875L 5.775,15.7875L 19.2525,27.3L 37.695,-1.90735e-006L 45.12,5.49 Z "/>
  <Setter Property="Stretch" Value="Fill"></Setter>
</Style>
<Style x:Key="CrossGlyph" TargetType="Path">
  <Setter Property="Data" Value="F1 M 0,32.505L 13.4025,19.1025L 0,5.69249L 5.67,-7.62939e-006L 19.08,13.41L 32.505,-7.62939e-006L 38.205,5.67L 24.7725,19.1025L 38.205,32.535L 32.505,38.205L 19.08,24.795L 5.67,38.205L 0,32.505 Z "/>
  <Setter Property="Stretch" Value="Fill"></Setter>
</Style>


更新于2012年10月20日: 奇怪的是,如果我将Style =“{ StaticResource TickGlyph}”替换为Data ="F1 M 45.12,5.49L 21.255,40.8L 20.4525,40.8L 0,23.2875L 5.775,15.7875L 19.2525,27.3L 37.695,-1.90735e-006L 45.12,5.49 Z "所有路径都可以正常加载,为什么Style属性不能被识别?:(


你找到解决这个问题的方法了吗?我也遇到了类似的问题。 - devson
不好意思,devson,目前我复制了每个<Path />。我并不特别喜欢按照Martin的解决方案为每个路径创建一个新的.xaml文件的想法,但如果你想尝试一下,它可能会起作用。 - GONeale
我遇到了同样的问题,最后按照这里建议的方法,将路径包装在一个ContentControl中:https://dev59.com/cF_Va4cB1Zd3GeqPRDV6#8838443 - Nathan
1个回答

1

不确定这是否是最佳解决方案,但我几天前使用了这种方法:

使用XAML定义继承自Path的自定义对象

<Path x:Class="MyProject.MyPath"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Data="F1M1568.35,1934.42L1551.46,1917.44 1551.46,1925.43C1517.67,1925.43 1515.02,1945.4 1515.02,
        1949.39 1522.31,1933.42 1551.46,1941.4 1551.46,1941.4L1551.46,1949.39 1568.35,1934.42z"
    Stretch="Uniform" Width="26" Height="26" UseLayoutRounding="False" RenderTransformOrigin="0.5,0.5">
</Path>

使用默认的 CodeBehind

public partial class MyPath 
{
    public MyPath()
    {
        InitializeComponent();
    }
}

然后在您想要的地方实例化它。


这是一个有趣的方法,你采用这种方式是因为你也像我一样遇到了麻烦吗,Martin? - GONeale
我在尝试解决 WP7 应用程序中的另一个问题 - 如果您在某个地方使用图标,则需要拥有黑色和白色主题各一个。我宁愿使用通过样式定义颜色的一个对象 - 这很有效。 - Martin Suchan
好的。实际上,我做的一个WP7应用程序会根据手机的颜色主题自动更改相应的颜色?(对于应用栏而言) - GONeale
应用栏按钮会自动更改颜色,但您必须为其他视觉元素或按钮提供正确的图像/元素。 - Martin Suchan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接