我试图将一个Path元素的属性放入一个Style中,这样就可以了,因为我没有向Style setter添加数据:
<UserControl x:Class="Demo.Controls.SilverlightControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="400" Height="300">
<Grid x:Name="LayoutRoot" Background="White">
<Grid.Resources>
<Style x:Name="PathStyle" TargetType="Path">
<Setter Property="Data" Value="0,0 L1,0"></Setter>
<Setter Property="Stroke" Value="Blue"></Setter>
<Setter Property="Stretch" Value="Fill"></Setter>
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Path Grid.Row="0"
Height="7"
Data="M0,0 L1,0"
Stretch="Fill"
Stroke="Black"/>
<Path Grid.Row="1"
Height="7"
Style="{StaticResource PathStyle}"/>
</Grid>
</UserControl>
如果打开此示例,您将看到第一个路径没有问题,但第二个路径在Visual Studio 2008中产生AG_E_UKNOWN_ERROR
。
是否可以在样式中定义路径数据?
答案 0 :(得分:1)
这应该有效:
<Style x:Name="PathStyle" TargetType="Path">
<Setter Property="Data" Value="M0,0 L1,0"/>
<Setter Property="Stroke" Value="Blue"/>
<Setter Property="Stretch" Value="Fill"/>
</Style>
答案 1 :(得分:0)
在样式中定义data属性只会导致第一个使用正在呈现的样式的元素。其余的都不会呈现。你需要做类似以下的事情:
<Style x:Name="PathStyle" TargetType="Path">
<Setter Property="Stroke" Value="Blue"/>
<Setter Property="Stretch" Value="Fill"/>
</Style>
<Path Style="{StaticResource PathStyle}" Data="M0,0 L1,0" />
<Path Style="{StaticResource PathStyle}" Data="M0,0 L1,0" />
<Path Style="{StaticResource PathStyle}" Data="M0,0 L1,0" /> ...