2009-07-14 16 views
0

フォントカラーは、リストボックスやコンボボックスの内容(コントロールテンプレート外)から発生しています。商品が選択されていないときに白い背景に黒い文字を表示したいときに選択し、白い文字で黒い背景を表示したいと思う。 残念ながら、私はテキストの色を変更する方法を把握することができませんでした。選択された背景色と選択されていない背景色とのコントラストが良い色を見つけるのに苦労しています。リストボックスコントロールの選択されていないフォントカラーと異なるフォントカラーを設定する

Silverlight 3でチェックされていても、それを行うことはできないようです。

答えて

0

Silverlight 4でAutoCompleteBoxの下でポップするListBoxについても同様のことをやっていましたが、BingingとXAMLの強姦が多かったです。

基本的に、ListBoxItemスタイルを作成し、その下にいくつかのコントロールテンプレートハッキリを強制する必要があります。これはあなたのリストボックスに適用することができ、それは動作するはずです。

私が作業しているプロジェクトの関連コードをコピーしたので、ちょっと微調整する必要がありますが、マウスの上でフォントと選択矩形の色が変わるので、すばらしいはずです開始。

<Style x:Key="MyListBoxItemStyle" TargetType="ListBoxItem"> 
     <Setter Property="Foreground" Value="#FF4C4C4C" /> 
     <Setter Property="FontStyle" Value="Normal" /> 
     <Setter Property="FontWeight" Value="Bold"/> 
     <Setter Property="FontFamily" Value="Arial"/> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ListBoxItem"> 
       <Grid Background="{TemplateBinding Background}"> 
        <VisualStateManager.VisualStateGroups> 
        <VisualStateGroup x:Name="CommonStates"> 
         <VisualStateGroup.Transitions> 
          <VisualTransition GeneratedDuration="0:0:0.2" To="MouseOver"> 
           <VisualTransition.GeneratedEasingFunction> 
            <CubicEase EasingMode="EaseOut"/> 
           </VisualTransition.GeneratedEasingFunction> 
          </VisualTransition> 
          <VisualTransition From="MouseOver" GeneratedDuration="0:0:0.1"> 
           <VisualTransition.GeneratedEasingFunction> 
            <CubicEase EasingMode="EaseOut"/> 
           </VisualTransition.GeneratedEasingFunction> 
          </VisualTransition> 
         </VisualStateGroup.Transitions> 
         <VisualState x:Name="Normal"/> 
         <VisualState x:Name="MouseOver"> 
         <Storyboard> 
          <DoubleAnimationUsingKeyFrames Storyboard.TargetName="fillColor" Storyboard.TargetProperty="Opacity"> 
          <SplineDoubleKeyFrame KeyTime="0" Value="1"/> 
          </DoubleAnimationUsingKeyFrames> 
          <ColorAnimation Duration="0" To="#FFFFFFFF" Storyboard.TargetName="contentPresenter" Storyboard.TargetProperty="(Control.Foreground).(SolidColorBrush.Color)" d:IsOptimized="True"/> 
         </Storyboard> 
         </VisualState> 
        </VisualStateGroup> 
        <VisualStateGroup x:Name="SelectionStates"> 
         <VisualState x:Name="Unselected"/> 
         <VisualState x:Name="Selected"> 
         <Storyboard> 
          <DoubleAnimationUsingKeyFrames Storyboard.TargetName="fillColor2" Storyboard.TargetProperty="Opacity"> 
          <SplineDoubleKeyFrame KeyTime="0" Value="1"/> 
          </DoubleAnimationUsingKeyFrames> 
         </Storyboard> 
         </VisualState> 
        </VisualStateGroup> 
        </VisualStateManager.VisualStateGroups> 
        <Rectangle x:Name="fillColor" IsHitTestVisible="False" Opacity="0" RadiusX="1" RadiusY="1" Fill="#FF1f6cae"/> 
        <Rectangle x:Name="fillColor2" IsHitTestVisible="False" Opacity="0" Fill="#FF000000" RadiusX="1" RadiusY="1"/> 
        <ContentControl HorizontalAlignment="Left" Margin="{TemplateBinding Padding}" x:Name="contentPresenter" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" Foreground="#FF4c4c4c"/> 
       </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
      </Setter> 
     <Setter Property="FontSize" Value="14"/> 
    </Style> 

すぐにUserControl.Resourcesの下に移動し、バインドする準備が整います。

あなたが管理しているか、さらに説明が必要な場合はお知らせください。

+0

新しいプロジェクトに取り組んでいますが、私は自由な時間を過ごしたときにそれをチェックします。乾杯 –

関連する問題