请!谁能帮我解决这个问题: 我已经定义了一个由Metro Studio创建的路径图标。就像这样:
<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>
<!--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>
但是当我运行简单的测试程序时,它给了我一条错误消息:
Other information: "set the property" System.Windows.Controls.Viewbox.Child "when the exception is thrown." That number is "81", "41 line position".
如果删除第二个按钮中使用的第二个staticResource,它运行良好! 为什么我不能重用staticResource?! 谢谢你的任何提示!
答案 0 :(得分:2)
视觉元素只能拥有单个父元素。通过引用它两次,您可以将它添加到多个父项。在资源上设置x:Shared="false"
以使其克隆。
答案 1 :(得分:1)
元素一次只能存在于一个可视树中。您的路径现在存在于两个按钮的可视树中。
使用x:Shared="false"
或仅使用创建一个资源,只更改Key
。
使用此UserControl
创建Path
,或使用ViewBox
创建Path
。