我有以下ListBox:
<ListBox ScrollViewer.VerticalScrollBarVisibility="Disabled"
HorizontalAlignment="Stretch"
HorizontalContentAlignment="Stretch"
SelectionChanged="ListBoxContainerSelectionChanged"
ItemsSource="{Binding Movies}"
ItemContainerStyle="{StaticResource HeaderListBoxItemStyle}">
<ListBox.ItemTemplate>
<DataTemplate>
<Controls:MoviesItemControl Header="{Binding Title}"
Detail="{Binding FormattedDescription}"
Rating="{Binding Rating}"
Opacity="{Binding IsSuppressed, Converter={StaticResource DimIfTrueConverter}}"
IsEnabled="{Binding IsSuppressed, Converter={StaticResource InverseBooleanConverter}}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我正在尝试将ListBoxItem
的禁用状态设置为'已抑制'(未找到说明的电影)。我有一个属性,我能够绑定到我的个人控件,但我希望它们不能在实际列表中选择。 (并使用我ItemsContainerStyle
中包含的禁用状态)
我已经在使用Trigger
的SO上看到了一些实现,但是这似乎在WP7中不可用,我宁愿不必为每个控件创建不同的样式,以便它们正确绑定。
有什么想法吗?
答案 0 :(得分:2)
请参阅以下问题:WP7 - Databind ListboxItem's IsEnabled Property
反过来又与此相关联:Better SetterValueBindingHelper makes Silverlight Setters better-er!
我为David Anson针对此特定情况尝试了SetterValueBindingHelper
,效果很好。您所要做的就是将 SetterValueBindingHelper.cs 添加到您的项目中,然后您可以将IsEnabled
绑定到这样的setter中
<Style x:Key="HeaderListBoxItemStyle" TargetType="ListBoxItem">
<Setter Property="delay:SetterValueBindingHelper.PropertyBinding">
<Setter.Value>
<delay:SetterValueBindingHelper Property="IsEnabled"
Binding="{Binding IsSuppressed}"/>
</Setter.Value>
</Setter>
</Style>