将我的ViewModelBase移动到可移植类库

时间:2013-01-02 20:48:18

标签: wpf portable-class-library

我正在尝试使用可移植类库来减少我自己的MVVM框架的每个平台的程序集。

所以我目前拥有此代码(受@ lbugnion MVVMLight启发)

        public static bool IsInDesignModeStatic
    {
        get
        {
            if (!_isInDesignMode.HasValue)
            {
#if SILVERLIGHT
                        _isInDesignMode = DesignerProperties.IsInDesignTool;
#其他
                var prop = DesignerProperties.IsInDesignModeProperty;
                _isInDesignMode
                    = (bool)DependencyPropertyDescriptor
                                 .FromProperty(prop, typeof(FrameworkElement))
                                 .Metadata.DefaultValue;

                // Just to be sure
                if (!_isInDesignMode.Value
                    && Process.GetCurrentProcess().ProcessName.StartsWith("devenv", StringComparison.Ordinal))
                {
                    _isInDesignMode = true;
                }
#万一
            }

            return _isInDesignMode.Value;
        }
    }

}

但是当我尝试在PCL中使用它时,它无法识别DesignerProperties和FrameworkElement等。 我该怎样克服这个?

谢谢!

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:0)

我认为您不应该将此代码直接包含在PCL中。 pcl的路线图看起来不错 - 但我怀疑FrameworkElement很快就可以移植。

或者:

答案 2 :(得分:-1)

你真的不应该在PCL中使用平台相关的调用。 PCL的目的是共享代码,这对所有目标平台都是通用的 如果你必须使用一些特定于平台的调用,那么使用依赖注入和IoC隐藏实际的实现并仅使用PCL中的接口类型,这应该可以正常工作。