C# x:TypeArguments中的可空类型

C# x:TypeArguments中的可空类型,c#,wpf,xaml,C#,Wpf,Xaml,是否可以将可空类型传递给XAML泛型类型参数(x:TypeArguments) 我有: <base:ControlBase x:TypeArguments="sys:Int32" ... 不,很遗憾,这是不可能的。您需要创建一个中间类来解决这个问题(我已经尝试了所有可能的方法,但都不起作用) 这应该做到: sys:Nullable`1[System.Int32] Intellisende和Resharper在这方面给了您一个错误,但它应该可以工作 来自:如果泛型约束本身使用泛

是否可以将可空类型传递给XAML泛型类型参数(x:TypeArguments)

我有:

 <base:ControlBase
  x:TypeArguments="sys:Int32"
  ...

不,很遗憾,这是不可能的。您需要创建一个中间类来解决这个问题(我已经尝试了所有可能的方法,但都不起作用)

这应该做到:

sys:Nullable`1[System.Int32]
Intellisende和Resharper在这方面给了您一个错误,但它应该可以工作


来自:如果泛型约束本身使用泛型类型,则嵌套的约束类型参数可以包含在括号()中。如果这是正确的,您应该能够执行
x:TypeArguments=“sys:Nullable(x:Int32)”
。另见。也试过了,也没用…@Patrickhoffman-很有趣,谢谢。看起来应该是从医生那里来的。是的,很奇怪。其他人提出了另一个建议,但也不起作用:(有趣。您是否尝试过自定义XAML标记扩展来接管类型名解析,即
x:TypeArguments=“{MyParse sys:Nullable}”
甚至
x:TypeArguments=“{MyParser int?}”
?我认为它必须正常工作,但如果您尝试过,但又失败了,我很想听听为什么/发生了什么?不,我没有尝试过,只是普通的标记。另外,dbc在这个问题下的建议也没有帮助。我想看看是否有可能用描述的方式来做。@quetzalcatl我尝试过我们的建议。它给出了“严重性代码描述项目文件行抑制状态错误{local'是未声明的命名空间。”
。由于类确实存在,名称空间的计算似乎不太有效。我得到了相同的结果。我还尝试将扩展放入默认名称空间(请参阅)。扩展本身在所有其他地方都可以正常工作,但在
x:TypeArguments
中不行。似乎指令根本不接受标记扩展,我的失败在这里。例如,如果I.e.
x:Name
接受标记扩展,我会非常惊讶。不知怎的,我在考虑TypeArguments时没有考虑过它。现在,我没有我看不到任何进一步的选项。顺便说一句,我在Xaml 2006而不是2009上试过。@Quetzalcatl感谢您的尝试。这似乎是当前实现中的一个中断。因此,中间类似乎是目前唯一的解决方案。
<base:NullableInt32ControlBase ... >
public class NullableInt32ControlBase : ControlBase<int?>
{ }
sys:Nullable`1[System.Int32]