ItemTemplate中的Silverlight ContentControl

ItemTemplate中的Silverlight ContentControl,silverlight,data-binding,Silverlight,Data Binding,我想知道为什么会有这种代码 <UserControl x:Class="TestSilverlight.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xml

我想知道为什么会有这种代码

<UserControl x:Class="TestSilverlight.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400">

<UserControl.Resources>
    <Button x:Key="button" Content="{Binding}" />
</UserControl.Resources>

<Grid x:Name="LayoutRoot" Background="Yellow">
    <ListBox Name="listBox">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <ContentControl Content="{StaticResource button}" />
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>

使用System.Collections.Generic;
名称空间测试Silverlight
{
公共部分类主页
{
公共主页()
{
初始化组件();
listBox.ItemsSource=新列表{“a”、“b”、“c”};//如果没有这一行,它就可以工作
}
}
}

不起作用。它引发解析器异常(无法在ContentControl中设置属性内容)。没有约束力,它工作得很完美。可以吗?

看起来您的逻辑有问题。如果您定义了Button类型的资源,则会生成按钮的一个实例。一个控件的单个实例不能是多个控件的内容

为什么不这样做:

<ListBox Name="listBox">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Button Content="{Binding}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

看起来您的逻辑有问题。如果您定义了Button类型的资源,则会生成按钮的一个实例。一个控件的单个实例不能是多个控件的内容

为什么不这样做:

<ListBox Name="listBox">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Button Content="{Binding}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>


它不起任何作用。这个例子是我想要实现的代码的一小部分。我没有绑定按钮内容以显示即使在这种情况下它也不起作用。我唯一需要的是资源中的内容(或者模板标记中的其他地方)。我希望设置项目模板的一部分(而不是整个模板,在本例中我可以使用模板选择器)。我忘了说我的问题是为什么这段代码不起作用。可能与名称范围有关。也许可以尝试将资源放在app.xamlI中,请注意,相同的代码在wpf应用程序中运行良好。在我看来,这是silverlight的bug,它没有任何作用。这个例子是我想要实现的代码的一小部分。我没有绑定按钮内容以显示即使在这种情况下它也不起作用。我唯一需要的是资源中的内容(或者模板标记中的其他地方)。我希望设置项目模板的一部分(而不是整个模板,在本例中我可以使用模板选择器)。我忘了说我的问题是为什么这段代码不起作用。可能与名称范围有关。也许可以尝试将资源放在app.xamlI中,请注意,相同的代码在wpf应用程序中运行良好。在我看来,这是silverlight的bug。