2009-04-14 7 views
4

J'ai une collection de ViewModels liés à un ListBox. J'essaye de lier les propriétés IsSelected de chaque ensemble. Dans WPF, il fonctionne en définissant le style:Silverlight MVVM ListBoxItem IsSelected

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

Cela ne fonctionne pas dans Silverlight. Comment puis-je accomplir cela?

+0

Une chance de résoudre ce problème? Je suis confronté exactement au même problème. –

Répondre

2

Dans Silverlight, vous ne pouvez pas créer des styles "globaux", c'est-à-dire des styles qui modifient tous les contrôles d'un certain type. Votre style a besoin d'une clé et votre contrôle doit la référencer.

En outre, TargetType a simplement besoin du nom du type de contrôle. Silverlight ne prend pas en charge l'extension x: Type.

ib.

1

Voici comment je le fais:

<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> 

Vous devez faire la liaison relative, qui n'existe pas dans Silverlight malheureusement ... BindingHelper est une classe d'aide qui surmonte cette limitation (recherche « par rapport lier dans silverlight "pour le trouver).

Questions connexes