2016-08-03 8 views
1

Bitte! Wer kann mir helfen, dieses Problem zu lösen: Ich habe ein Pfadsymbol definiert, das von Metro Studio erstellt wird. wie folgt aus:Warum kann eine Pfadressource nicht von mehreren StaticResource-Referenzen verwendet werden?

<Window.Resources> 
    <!--ICO Resources--> 
    <Path x:Key="CheckBoxOKICO" Data="M23.699997,8.8999939L26.099991,11.699997 13.099991,23.099991 5.8000031,14.599991 8.5999908,12.199997 13.5,17.899994z M1.6999969,1.6999969L1.6999969,30.300003 30.300003,30.300003 30.300003,1.6999969z M0,0L32,0 32,32 0,32z" Stretch="Uniform" Fill="#FF161616" Width="26" Height="26" Margin="0,0,0,0" RenderTransformOrigin="0.5,0.5"> 
     <Path.RenderTransform> 
      <TransformGroup> 
       <TransformGroup.Children> 
        <RotateTransform Angle="0" /> 
        <ScaleTransform ScaleX="1" ScaleY="1" /> 
       </TransformGroup.Children> 
      </TransformGroup> 
     </Path.RenderTransform> 
    </Path> 

Es war ein Vektor-Symbol: enter image description here ich es in meinem WPF-Fenster-Benutzeroberfläche wiederverwenden möchten:

 <!--Button1 is OK--> 
    <Button x:Name="btnTaskItem1" Grid.Row="0"> 
     <Button.Content> 
      <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Width="220"> 
       <Viewbox Width="18" Height="18" Child="{StaticResource CheckBoxOKICO}"/> 
       <TextBlock x:Name="txtTaskItem1" Margin="5,0" Text="binding Task Item1"/> 
      </StackPanel> 
     </Button.Content> 
    </Button> 
    <!--Button2 is No OK--> 
    <Button x:Name="btnTaskItem2" Grid.Row="1"> 
     <Button.Content> 
      <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" Width="220"> 
       <Viewbox Width="18" Height="18" Child="{StaticResource CheckBoxOKICO}"/> 
       <TextBlock x:Name="txtTaskItem2" Margin="5,0" Text="binding Task Item2"/> 
      </StackPanel> 
     </Button.Content> 
    </Button> 

Was ich will, ist wie folgt: enter image description here

Aber wenn ich das einfache Testprogramm ausführen, gab es mir eine Fehlermeldung:

Other information: "set the property" System.Windows.Controls.Viewbox.Child "when the exception is thrown." That number is "81", "41 line position". 

Wenn ich die zweite statische Ressource lösche, wo in der zweiten Taste verwendet, funktioniert es gut! Warum kann ich die staticResource nicht wiederverwenden ?! Danke für Ihre Tipps!

Antwort

2

Visuelle Elemente können immer nur ein Elternteil haben. Indem Sie es zweimal referenzieren, fügen Sie es mehreren Eltern hinzu. Setzen Sie x:Shared="false" auf die Ressource, um es zu klonen.

+0

Vielen Dank! es funktioniert jetzt ~ – Wuying283

1

Ein Element kann immer nur in einem visuellen Baum vorhanden sein. Ihr Pfad ist jetzt in visuellen Bäumen von zwei Schaltflächen vorhanden.

Verwenden Sie entweder x:Shared="false" oder verwenden Sie einfach eine weitere Ressource mit nur Key geändert.

Erstellen Sie UserControl mit dieser Path oder ViewBox mit Path.

+0

Guter Typ! Mögen Sie jeden Tag glücklich. Vielen Dank, Ihre Antwort ist richtig, aber nur eine richtige Antwort kann auf dieser Webseite ausgewählt werden. – Wuying283

+0

@ Wuying283 Sie können die richtige Antwort ändern, wenn Sie denken. Klicken Sie auf das Häkchen, um die Markierung aufzuheben. – AnjumSKhan

Verwandte Themen