是否可以仅使用数据绑定在Silverlight中创建Path?

时间:2011-03-28 11:22:54

标签: silverlight data-binding path

我想动态创建一个由几个BezierSegments组成的路径。

我想绑定数据,以便我的数据源只需要提供数字。 即应用程序不应在代码中创建任何几何对象。

这可能吗?

更新

以下是固定数量的路径段的示例:

<Path Stroke="Black">
    <Path.Data>
        <PathGeometry>
            <PathFigure StartPoint ="{Binding CalculatedPointA, Mode=OneWay}">
                <LineSegment Point="{Binding CalculatedPointB, Mode=OneWay}" />
                <LineSegment Point="{Binding CalculatedPointC, Mode=OneWay}" />
                <LineSegment Point="{Binding CalculatedPointA, Mode=OneWay}" />
            </PathFigure>
       </PathGeometry>
   </Path.Data>
</Path>

我想拥有可变数量的细分。

2 个答案:

答案 0 :(得分:0)

您实际问题的答案是:不能将数据绑定到这样的地方,以便在不使用代码的情况下动态创建路径图或分段(或者使用其他第三方编写代码的附加组件)。

这个问题是否由于没有必要时不编写代码或者有理由相信你不应该编写代码而被驱使?

答案 1 :(得分:0)

将XAML中Path元素的Data属性绑定到视图模型中String类型的DependencyProperty。使用代码构建Path语句的字符串表示形式:“F0 M 10,10 L100,10 A 1,1,1,1,110,10 L 200,10”。

这是属性:

Public Shared ReadOnly PathDataProperty As DependencyProperty = DependencyProperty.Register("PathData", GetType(System.String), GetType(LineViewModel), Nothing)
    Public Property PathData As String
        Get
            Return Me.GetValue(PathDataProperty)
        End Get
        Set(ByVal value As String)
            Me.SetValue(PathDataProperty, value)
            RaisePropertyChanged(MethodBase.GetCurrentMethod().Name.Substring(4))
        End Set
    End Property

这是XAML:

<Path x:Name="PrimaryPath" 
          StrokeThickness="{Binding LineThickness, Source={StaticResource LineVM}, Mode=OneWay}" 
          Stroke="{Binding LineColor, Source={StaticResource LineVM}, Mode=OneWay}" 
          Data="{Binding PathData, Source={StaticResource LineVM}, Mode=OneWay, Converter={StaticResource myConv}}">
    </Path>

http://stringtopathgeometry.codeplex.com/ ..

下载StringToPathGeomertry转换器

你应该全力以赴!