2010-11-22 12 views
1

私は、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から利用できないように見えるので、これを行うきれいな方法を見つけることができないようです。

アイデア?

答えて

2

ItemContainerのテンプレートでフォアグラウンドを制御する場合は、ItemTemplateの代わりにそのフォアグラウンドを設定できます。 TextBlock.ForegroundとTextBlock.FontSizeは、添付プロパティとして使用することができ、親の値を継承します:

<ContentPresenter TextBlock.Foreground="White" TextBlock.FontSize="18"/> 

これらのプロパティの設定が継承された値をオーバーライド避けるために、ItemTemplateにから削除する必要があります。その後、必要な値をVisualStateアニメーションから設定できます。

+0

私は銀色で動作するとは思わない。 – AnthonyWJones

+0

それは動作します! Johnさんに感謝しますが、これを拡張して、どうやってさまざまな視覚状態でこれらの値を変更することができますか? – Mark

+0

実際にすることができます:)私はちょうどチャールズでこのブログを見つけたhttp://www.charlespetzold.com/blog/2007/09/080231.html – Mark

0

答えが現在のSilverlightバージョンではもう機能しないと思っていますが、ContentPresenterに添付されたorpoertiesはもはやビルドされません。誰かがこれを把握していますか?

関連する問題