.net 泛型可以与Silverlight一起使用吗?

.net 泛型可以与Silverlight一起使用吗?,.net,silverlight,generics,.net,Silverlight,Generics,我有一个用户控件,它显示具有特定行为的客户端声明类型的对象。我想使用泛型。但是,我不确定如何在XAML中声明: <local:EditableListBox x:Name="SectionList" Margin="56,8,15,0" FontSize="64" SelectionChanged="SectionList_SelectionChanged" /> XAML: <Grid x:Name="LayoutRoot"> <ListBox x:Na

我有一个用户控件,它显示具有特定行为的客户端声明类型的对象。我想使用泛型。但是,我不确定如何在XAML中声明:

<local:EditableListBox x:Name="SectionList" Margin="56,8,15,0" FontSize="64" SelectionChanged="SectionList_SelectionChanged" />
XAML:

<Grid x:Name="LayoutRoot">
    <ListBox x:Name="ContentListBox">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid ManipulationCompleted="Grid_ManipulationCompleted">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>

                    <Image Source="{Binding IconSource}"
                           Grid.Column="0"
                           Width="96"
                           Height="96"
                           VerticalAlignment="Center"
                           Visibility="{Binding Editing, Converter={StaticResource visibilityConverter}}"
                           />

                    <TextBlock Text="{Binding Name}" 
                               Grid.Column="1" 
                               Foreground="{Binding Enabled, Converter={StaticResource enabledConverter}}" />

                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>



它给出了两个编译器错误:
ListBox
ContentListBox
InitializeComponent()
未定义。我怀疑这个问题与如何将类拆分为两个
部分定义有关,而我的定义是参数化的,而生成的代码不是。我该如何解决这个问题?

您可以在代码隐藏中使用泛型。在XAML中没有这么多。很抱歉我认为,您几乎必须在代码隐藏中生成XAML或创建控件(等等)

[澄清]
我的意思是,在后面的代码中,您可以像预期的那样使用泛型。制作T的
列表
,制作
索引
,等等


您可以使用XamlReader和XamlWriter动态生成XAML。

我不确定Silverlight。但是post提供了另一种方法的链接。

在XAML中无法使用泛型,但它们可以在Silverlight项目的C#代码中使用。如果能够,您可以使用指定的类型从泛型类型创建派生类型,然后在XAML中创建该派生类型。

否您不能直接在Silverlight XAML中使用泛型类型


但是你可以让自己熟悉一下。您的模型和viewmodels可以很容易地成为泛型类型,您可以在那里进行所有编码。XAML视图是哑的,没有或很少有代码隐藏,并且只绑定到视图模型。

显然不是现成的。请看can-i-specify-a-generic-type-in-XAML需要在XAML中声明的任何内容都不能有泛型参数。我建议不要在从
控件派生的任何东西上尝试泛型,但可以在代码中创建泛型。没有办法在XAML中指定泛型,因此您的代码隐藏不能有泛型参数。您可以指定方法吗?我正试图这样做,但它不起作用(见上文)。
<Grid x:Name="LayoutRoot">
    <ListBox x:Name="ContentListBox">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <Grid ManipulationCompleted="Grid_ManipulationCompleted">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>

                    <Image Source="{Binding IconSource}"
                           Grid.Column="0"
                           Width="96"
                           Height="96"
                           VerticalAlignment="Center"
                           Visibility="{Binding Editing, Converter={StaticResource visibilityConverter}}"
                           />

                    <TextBlock Text="{Binding Name}" 
                               Grid.Column="1" 
                               Foreground="{Binding Enabled, Converter={StaticResource enabledConverter}}" />

                </Grid>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>