C# 如何在MVVM模式wpf中绑定StrokeDashArray属性

C# 如何在MVVM模式wpf中绑定StrokeDashArray属性,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我有一个WPF应用程序,在一个画布中,有些线条需要是虚线,有些线条需要是普通线。我的问题是StrokeDashArray的确切类型是什么。在msdn中,我看到的是使用DoubleCollection,但它来自System.Windows.Media。 如何使用MVVM模式中的良好实践为StrokeDashArray创建属性。如果要绑定到DashArray,则它是一个DoubleCollection,因此可以执行以下操作: private DoubleCollection _Dashes

我有一个WPF应用程序,在一个画布中,有些线条需要是虚线,有些线条需要是普通线。我的问题是StrokeDashArray的确切类型是什么。在msdn中,我看到的是使用DoubleCollection,但它来自System.Windows.Media。
如何使用MVVM模式中的良好实践为StrokeDashArray创建属性。

如果要绑定到DashArray,则它是一个DoubleCollection,因此可以执行以下操作:

    private DoubleCollection _Dashes = new DoubleCollection { 1, 2 };
    public DoubleCollection Dashes
    {
        get { return this._Dashes;}
        set { this._Dashes = value; RaisePropertyChanged(); }
    }
然后在XAML中:

    <Line Stroke="Black" StrokeThickness="2" StrokeDashArray="{Binding Dashes}" X1="0" Y1="50" X2="100" Y2="50"/>


如果要创建画布元素的动态数组,则需要创建ItemsControl并将ItemsControl.Panel设置为画布。然后,通常使用Item.Template为每个元素声明行,并使用数据触发器在不同的行/划线类型之间进行选择。

使用DoubleCollection是一种很好的做法,因为位于程序集PresentationCore.dllIf中的命名空间System.Windows.Media中,如果您不想使用DoubleCollection,那么使用转换器从double[]或任何您想使用的其他内容创建一个就很容易了。