4

ListBox にバインドされた ViewModel のコレクションがあります。それぞれの IsSelected プロパティをバインドしようとしています。WPF では、スタイルを設定することで機能します。

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

これは Silverlight では機能しません。どうすればこれを達成できますか?

4

2 に答える 2

2

Silverlightでは、「グローバル」スタイル、つまり特定の種類のすべてのコントロールを変更するスタイルを作成することはできません。スタイルにはキーが必要であり、コントロールはそれを参照する必要があります。

また、TargetTypeにはコントロールタイプ名が必要です。Silverlightはx:Type拡張機能をサポートしていません。

ib。

于 2009-04-15T20:26:53.400 に答える
1

これが私がそれを行う方法です:

<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 での相対バインディング」を検索して見つけてください)。

于 2009-04-16T19:35:44.293 に答える