2009-04-14 4 views
4

ListBox에 바인딩 된 ViewModel 컬렉션이 있습니다. 각각의 IsSelected 속성을 바인딩하려고합니다. WPF에서는 스타일을 설정하여 작동합니다.Silverlight MVVM ListBoxItem IsSelected

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

이것은 Silverlight에서 작동하지 않습니다. 이것을 어떻게 할 수 있습니까?

+0

행운이 해결할 무엇입니까? 나는 똑같은 문제에 직면 해있다. –

답변

2

Silverlight에서는 "전역"스타일, 즉 특정 유형의 모든 컨트롤을 수정하는 스타일을 만들 수 없습니다. 당신의 스타일은 키가 필요하며 컨트롤은이를 참조해야합니다.

또한 TargetType에는 제어 유형 이름 만 있으면됩니다. Silverlight는 x : Type 확장을 지원하지 않습니다.

ib.

당신은 실버 라이트에 존재하지 않는, 상대적 바인딩을 할 필요가
<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> 

불행하게도 ... BindingHelper이 한계를 극복하는 도우미 클래스 (상대 "를 검색 : 여기

1

내가 그것을 어떻게입니다 실버 라이트 바인딩 "을 찾아보십시오).