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 ストア アプリの 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属性が尊重されないのはなぜですか? :(

4

1 に答える 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>

デフォルトの分離コードを使用する

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

次に、必要な場所でインスタンス化します。

于 2012-10-14T09:30:47.007 に答える