2009-04-14 6 views
4

Ich habe eine Sammlung von ViewModels, die an eine ListBox gebunden sind. Ich versuche, die IsSelected-Eigenschaften von jedem zusammen zu binden. In WPF funktioniert es durch Einstellen des Stils:Silverlight MVVM ListBoxItem IsSelected

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

Dies funktioniert nicht in Silverlight. Wie kann ich das erreichen?

+0

Haben Sie Glück, das zu lösen? Ich stehe genau dem gleichen Problem gegenüber. –

Antwort

2

In Silverlight können Sie keine "globalen" Stile erstellen, dh Stile, die alle Steuerelemente eines bestimmten Typs ändern. Ihr Stil benötigt einen Schlüssel und Ihre Steuerung muss darauf verweisen.

Außerdem benötigt TargetType nur den Namen des Steuerelementtyps. Silverlight unterstützt die Erweiterung x: Type nicht.

ib.

1

Hier ist, wie ich es tun:

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

Sie benötigen relative Bindung zu tun, die in Silverlight leider nicht vorhanden ... BindingHelper ist eine Hilfsklasse, die diese Einschränkung (Suche windet für „relative Bindung in Silverlight "um es zu finden".