私は、ItemContainerスタイルとItemTemplateスタイル用に定義されたテンプレートを持つリストボックスを持っています。Silverlight/WPFのTemplateBindingとContentPresenter
私のItemTemplateには非常に簡単であるのDataTemplateです:
<DataTemplate x:Key="DataTemplate1">
<Grid x:Name="grid">
<TextBlock TextWrapping="Wrap" Text="{Binding}" Foreground="White" FontSize="24" />
</Grid>
</DataTemplate>
とItemContainerも非常に簡単です:すべてが正常に動作します
<Grid x:Name="Grid" HorizontalAlignment="Stretch" Height="Auto" SnapsToDevicePixels="true" Width="373" Background="{x:Null}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="37"/>
</Grid.ColumnDefinitions>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="SelectionStates">
<VisualState x:Name="Unselected"/>
<VisualState x:Name="Selected"/>
<VisualState x:Name="SelectedUnfocused"/>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<ContentPresenter x:Name="contentPresenter" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Stretch" Margin="2,0,0,0" d:LayoutOverrides="Width">
</ContentPresenter>
<Image x:Name="image" HorizontalAlignment="Center" Margin="0,0,0,1" Source="/MyApp;component/Images/icon_arrowcircle.png" Stretch="Uniform" Width="37" Grid.Column="1" VerticalAlignment="Center" Opacity="0"/>
</Grid>
。
しかし、アイテムが選択されたとき(つまり選択されたビジュアル状態)、DataTemplateのTextBlockでフォアグラウンドカラーが白でなく黒に変更され、フォントサイズが大きくなるようにしたい。しかし、私は、TemplateBindingがDataTemplateから利用できないように見えるので、これを行うきれいな方法を見つけることができないようです。
アイデア?
私は銀色で動作するとは思わない。 – AnthonyWJones
それは動作します! Johnさんに感謝しますが、これを拡張して、どうやってさまざまな視覚状態でこれらの値を変更することができますか? – Mark
実際にすることができます:)私はちょうどチャールズでこのブログを見つけたhttp://www.charlespetzold.com/blog/2007/09/080231.html – Mark