Привязка свойства IsEnabled ListBoxItem с установленным ItemTemplate - PullRequest
0 голосов
/ 17 августа 2011

У меня есть следующее 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 s, которые «подавлены» (фильмы без описания).У меня есть свойство, которое я могу привязать к своему индивидуальному элементу управления, но я хочу, чтобы их нельзя было выбрать в реальном списке.(И используйте отключенное состояние, включенное в мой ItemsContainerStyle)

Я видел несколько реализаций SO, использующих Trigger, но этого, похоже, нет в WP7, и я предпочел бы не иметьсоздать разные стили для каждого элемента управления, чтобы они правильно связывались.

Есть идеи?

1 Ответ

2 голосов
/ 17 августа 2011

См. Следующий вопрос: WP7 - свойство IsEnabled ListboxItem

Что, в свою очередь, ссылается на это: Better SetterValueBindingHelper делает Silverlight Setters лучше-э-э!

Я опробовал SetterValueBindingHelper Дэвида Ансона для этого конкретного сценария, и он отлично работал.Все, что вам нужно сделать, это добавить SetterValueBindingHelper.cs в ваш проект, а затем вы можете привязать IsEnabled в установщике следующим образом

<Style x:Key="HeaderListBoxItemStyle" TargetType="ListBoxItem">
    <Setter Property="delay:SetterValueBindingHelper.PropertyBinding">
        <Setter.Value>
            <delay:SetterValueBindingHelper Property="IsEnabled"
                                            Binding="{Binding IsSuppressed}"/>
        </Setter.Value>
    </Setter>
</Style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...