Silverlight MVVM ListBoxItem IsSelected - PullRequest
       7

Silverlight MVVM ListBoxItem IsSelected

4 голосов
/ 15 апреля 2009

У меня есть коллекция ViewModels, привязанных к ListBox. Я пытаюсь связать свойства IsSelected каждого из них. В WPF это работает, устанавливая стиль:

<Style TargetType="{x:Type ListBoxItem}">
    <Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}" />
</Style>

Это не работает в Silverlight. Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 16 апреля 2009

В Silverlight вы не можете создавать «глобальные» стили, то есть стили, которые изменяют все элементы управления определенного типа. Вашему стилю нужен ключ, и ваш контроль должен ссылаться на него.

Кроме того, TargetType просто нужно имя типа элемента управления. Silverlight не поддерживает расширение x: Type.

И.Б..

1 голос
/ 16 апреля 2009

Вот как я это делаю:

<ListBox.ItemTemplate>
    <DataTemplate>
...
<CheckBox VerticalAlignment="Top" HorizontalAlignment="Left"
          x:Name="CheckBox1" IsChecked="True" Grid.Row="0">
    <inf:BindingHelper.Binding>
        <inf:BindingProperties TargetProperty="Visibility" SourceProperty="IsSelected"
            Converter="{StaticResource VisibilityConverter}"
            RelativeSourceAncestorType="ListBoxItem" />
    </inf:BindingHelper.Binding>
</CheckBox>
...
    </DataTemplate>
</ListBox.ItemTemplate>

Вам нужно сделать относительное связывание, которого, к сожалению, нет в Silverlight ... BindingHelper - это вспомогательный класс, который преодолевает это ограничение (найдите «относительное связывание в silverlight», чтобы найти его).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...