WP7 - Databind ListboxItem的IsEnabled属性

时间:2011-06-07 06:52:05

标签: c# xaml data-binding windows-phone-7

我有一个Listbox,其ItemsSource属性数据绑定到一个对象集合。集合中的每个对象都有一个Enabled属性,我想将它们绑定到各自的ListboxItem。我试过这种方法:

<ListBox ItemsSource="{Binding MyList}">
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="IsEnabled" Value="{Binding Enabled}" />
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>

这导致AG_E_RUNTIME_MANAGED_UNKNOWN_ERROR在此行失败:

<Setter Property="IsEnabled" Value="{Binding Enabled}" />

如何绑定到ListboxItems上的IsEnabled属性(使用Windows Phone 7)?

1 个答案:

答案 0 :(得分:2)

属性设置器中的绑定是Silverlight 5功能。 Windows Phone 7使用Silverlight 3,因此无法使用此功能。 Windows Phone 7.1使用Silverlight 4,因此该功能甚至不是Windows Phone 7.5(Mango)的一部分。你手上等了很久!

有一些解决方法。请参阅博客文章 As the platform evolves, so do the workarounds (Better SetterValueBindingHelper makes Silverlight Setters better-er!)

您还可以创建ListBox的子类,覆盖PrepareContainerForItemOverride以在添加每个ListBoxItem时添加绑定。请参阅 A Fast Loading Windows Phone 7 NavigationList Control 中的示例,了解如何使用该覆盖。