【发布时间】:2014-05-27 10:59:08
【问题描述】:
TL;DR - 我在将系统类型作为值传递给 Silverlight 中的类型参数时遇到问题。这是某种已知问题吗?有可能吗?
详细说明:
在我的控制中,我有 Type 类型的依赖属性。从System 命名空间传递类型存在问题,例如int(Int32)、string(String)、Guid、decimal(Decimal)、bool(Boolean)。在这些情况下,依赖属性接收 null 值(依赖属性默认值设置为某个非空值,因此我在 OnPropertyChanged 事件中看到 null 被传递)。对于其他类型,它可以正常工作。
这是我的依赖属性的代码:
public static readonly DependencyProperty SomeTypeProperty = DependencyProperty.Register(
"SomeType", typeof(Type), typeof(Control1), new PropertyMetadata(typeof(EmptyType), OnSomeTypePropertyChanged));
public Type SomeType
{
get { return (Type)GetValue(SomeTypeProperty); }
set { SetValue(SomeTypeProperty, value); }
}
以及控件的用法:
xmlns:sys="clr-namespace:System;assembly=mscorlib"
[...]
<sl1:Control1 SomeType="sys:Boolean" />
有趣的是 - 它在 Visual Studio 的 XAML 设计器中工作。 我通过在我的 Control1 控件的内容中显示属性值以及传递的类型来知道这一点。但是在 Silverlight 运行时环境中它不起作用。
【问题讨论】:
标签: c# .net silverlight xaml