【问题标题】:How can bind StrokeDashArray property in MVVM pattern wpf如何在 MVVM 模式 wpf 中绑定 StrokeDashArray 属性
【发布时间】:2016-04-23 06:46:16
【问题描述】:

我有 WPF 应用程序,其中我在一个画布中有一些需要虚线的线,而一些需要是法线。我的问题是 StrokeDashArray 到底是什么类型。在 msdn 中,我看到使用的是 DoubleCollection,但来自 System.Windows.Media。 如何使 StrokeDashArray 的属性在 MVVM 模式中使用良好的做法。

【问题讨论】:

    标签: c# wpf xaml mvvm


    【解决方案1】:

    如果你想绑定到 dash 数组,那么它是一个 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"/>
    

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

    【讨论】:

    • 使用 DoubleCollection 是一种很好的做法,因为它位于命名空间 System.Windows.Media 中,而后者位于程序集 PresentationCore.dll 中
    • 如果您不想使用 DoubleCollection,那么使用转换器从 double[] 或您想使用的任何其他内容创建一个很容易。
    猜你喜欢
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    相关资源
    最近更新 更多