绑定自定义类

时间:2012-02-20 07:40:55

标签: silverlight binding datatemplate

关于XAML的简单问题。 有一个类Achievement和一个控件AchievementControl来显示它。 我试图创建一个ListBox,其中包含List作为ItemsSource和DataTemplate

<ListBox ItemsSource={Binding Achievements}>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <controls:AchievementControl Achievement="{Binding}" />
        </DataTeplate>
    </ListBix.ItemTemplate>
</ListBox>

但正如我在调试器中看到的那样,它将一个System.Windows.Data.Binding对象作为一个值发送给Achievement属性的setter而不是Achievement对象,因此执行失败。

2 个答案:

答案 0 :(得分:0)

确保包含AchievementControl的控件具有DataContext集。然后确保DataContext具有Property(Example = MyAchievement)

<DataTemplate>
    <controls:AchievementControl Achievement="{Binding MyAchievement}" />
</DataTeplate>

答案 1 :(得分:0)

如果要直接与Achievement类绑定,则需要覆盖 ToString()方法或创建值转换器或与您的类的属性绑定。