2009-09-22 32 views
21

何がありますか?WPFリストボックスでフォーカスを移動したときに、選択したアイテムのスタイルが失われる

私は、XMLファイルからアイテムが移入ListBoxを持っています。 Styleプロパティの場合はDynamicResourceIsSelectedの場合はItemContainerStyleに書き込まれます。

は何をやりたいのですか?

ListBoxからフォーカスを移動した後でも、選択した項目をハイライト表示したがっています。

私はどのような問題に直面していますか?

私はスタイルがIsSelectedトリガ作品に指定されたアイテムを選択します。しかし、リストボックスからフォーカスを移動すると(タブを押すか他のコントロールをクリックすると)、選択した項目のスタイルが失われます。選択したアイテムスタイルを保持できるようにする方法はありますか?

ありがとうございます!

+0

なぜあなたは私の編集を元に戻すのですか? – SLaks

+0

おっと!間違っていた。ごめんなさい! – Vijay

+0

こんにちは、私は同じ問題に直面しているとソリューションの投稿を試みたが、私は問題を解決することはできません。あなたの投稿を編集して解決策を含むことができますか?ありがとう – jpsstavares

答えて

1

あなただけの背景色を設定している場合は、this answerごとに、リストボックスのためControlBrushを交換してみてください。参照答えはいくつかのケースで問題を解決します

+1

私はそれを試してみましょう。ありがとう! – Vijay

+1

これは悪い考えです。ビジュアルテーマをオフにしているユーザーには、多くのことが混乱します。スクロールバーとボタンは現在のハイライトカラーに変更されます(デフォルトでは青です)。ボタンとリストビューのスクロールバーは非常に悪い青色に変わります)。 – BrainSlugs83

28

が、コントロールが読み取り専用/無効になっていると、それはまた、むしろそれらを活用することよりも、カラースキームをオーバーライドするとき、それが壊れるとして理想的ではありません。私の提案は、ListBoxのタグに以下を追加することです:それは(関係なく、制御状態の)選択されるたびに

<ListBox....> 
    <ListBox.Resources> 
      <Style TargetType="ListBoxItem"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="ListBoxItem"> 
          <Border Name="Border" Padding="2" SnapsToDevicePixels="true"> 
           <ContentPresenter /> 
          </Border> 
          <ControlTemplate.Triggers> 
           <Trigger Property="IsSelected" Value="true"> 
            <Setter TargetName="Border" Property="Background" 
              Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/> 
           </Trigger> 
          </ControlTemplate.Triggers> 
         </ControlTemplate> 
        </Setter.Value> 
       </Setter> 
     </Style> 
    </ListBox.Resources> 
</ListBox> 

これが何をするか、リストボックス項目のハイライトの背景色を設定されています。

私の答えは、次のブログに伴い、既にこれらの答えに与えられた回答を、からの助けに基づいています。http://blogs.vbcity.com/xtab/archive/2009/06/29/9344.aspx

+0

このアプローチはうまく動作します。ありがとう! –

+0

これは受け入れられる回答である必要があります。 – Rich

関連する問題