Привязка ListBoxItem.ItemSelected к привязанному элементу в Silverlight - PullRequest
0 голосов
/ 25 июля 2010

Я использую шаблон MVVM с Silverlight 4 для привязки коллекции элементов TODO к ListBox.

Для каждого * имеется свойство IsSelected1008 * сущность.Это позволяет сделать несколько выборов в пользовательском интерфейсе, которые связаны с ViewModel.В то же время любые изменения, сделанные ViewModel, отражаются в View.

Я в основном пытаюсь сделать то, что было предложено в этом ответе .

К сожалению, в Silverlight(в отличие от WPF) Я просто не могу найти способ сделать это с шаблоном, поскольку Привязки в Setter Style не поддерживаются в SL4.

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

Однако, в отличие от любого другого метода- это представляется наиболее надежным для двухсторонней привязки списка выбранных элементов.

Как я могу выразить эту привязку в codebehind или XAML?

1 Ответ

3 голосов
/ 27 июля 2010

Самый простой способ, который я знаю, - это перегрузить DataTemplate и сделать его похожим на выбор ListBoxItem.Я использовал DataStateBehavior из Blend 4.0 Silverlight SDK, чтобы связать свойство IsSelected с правильным внешним видом.

<i:Interaction.Behaviors>
    <ei:DataStateBehavior Binding="{Binding IsSelected, Mode=TwoWay}" Value="True" TrueState="Selected" FalseState="Unselected"/>                   
</i:Interaction.Behaviors>

Вместо того, чтобы вставлять всю вещь, я ссылаюсь на сообщение, добавленное в мой блог здесь .

...