在Silverlight路径样式中设置数据属性

时间:2009-06-12 13:16:38

标签: visual-studio-2008 silverlight xaml

我试图将一个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

是否可以在样式中定义路径数据?

2 个答案:

答案 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" /> ...