在xaml 4.5+中创建通用列表

时间:2016-02-03 17:10:25

标签: c# wpf xaml generics .net-4.5

我正在尝试为我的一个用户控件制作规则列表。列表包含自定义类型+。我正在使用List<StringInputRule>来进行数据绑定。

我正在尝试在xaml中为控件设置规则:

DependancyProperty

用于控件的依赖属性的c#代码:

<controlsDefault:DateEditWithStringInput>
    <controlsDefault:DateEditWithStringInput.Rules>
       <x:Array Type="controlsDefault:StringInputRule" xmlns:sys="clr-namespace:System;assembly=mscorlib">
            <controlsDefault:StringInputRule Key="T" Amount="1" Unit="Day"/>
            <controlsDefault:StringInputRule Key="W" Amount="1" Unit="Week"/>
            <controlsDefault:StringInputRule Key="M" Amount="1" Unit="Month"/>
       </x:Array>
     </controlsDefault:DateEditWithStringInput.Rules>
</controlsDefault:DateEditWithStringInput>

因此,以下方法不会传递任何值,但它会编译。我已经读过,泛型类型可以在xaml中从2009版本4.0开始初始化,但我可能没有找到一个例子。

我的问题:如何在xaml中定义通用列表?

编辑:至今仍无法解决问题。

WorkAround (正如SzabolcsDézsi指出的那样):how use List<T> within xaml?

1 个答案:

答案 0 :(得分:0)

看起来像这样:

<controlsDefault:DateEditWithStringInput.Rules>
    <generic:List x:TypeArguments="controlsDefault:StringInputRule">
        <controlsDefault:StringInputRule Key="T" Amount="1" Unit="Day"/>
        <controlsDefault:StringInputRule Key="W" Amount="1" Unit="Week"/>
        <controlsDefault:StringInputRule Key="M" Amount="1" Unit="Month"/>
    </generic:List>
</controlsDefault:DateEditWithStringInput.Rules>

x:TypeArguments是XAML 2009的一项功能。遗憾的是,在编译的XAML中不支持它,因此您无法在WPF应用程序中使用它。阅读更多hereherehere