【问题标题】:Binding custom class绑定自定义类
【发布时间】:2012-03-10 14:09:41
【问题描述】:

关于 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 对象作为值发送给成就属性的设置器而不是成就对象,因此执行失败。

【问题讨论】:

  • 您必须为 Binding 分配 Path 属性
  • 即使我使用 {Binding Path=.},它的工作方式也是一样的。

标签: silverlight binding datatemplate


【解决方案1】:

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

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

【讨论】:

  • 我有一个列表框,我想绑定到 List 的项目。
  • 好的。首先确保您的 List 是 ObservableCollection (并在需要时实现 INotify)。然后无论你的收藏叫什么,都把这个名字放在成就="{Binding CollectionName}"
【解决方案2】:

如果你想直接绑定Achievement类那么你需要重写 ToString() 方法或创建一个值转换器 或与您的类的属性 绑定。

【讨论】:

  • 从成就类到什么值转换器?
  • 尝试在此处粘贴您的 xaml。我想看看你的数据上下文
  • 好的,我直接在问题中添加了一些xaml。
猜你喜欢
  • 2011-07-28
  • 2023-03-03
  • 2012-01-25
  • 2012-12-14
  • 1970-01-01
  • 2011-12-14
  • 2011-07-27
  • 2011-02-08
  • 2013-03-27
相关资源
最近更新 更多