2016-11-28 10 views
0

私はインターネット上でいくつかの時間を検索し、ここで私の問題の解決策を見つけることができますが、私が試したソリューションはすべて機能しません。私はWPFで全く新しいことを最初に言わなければならないかもしれません。おそらくこれは本当の問題かもしれませんが、私は達成したいことを説明します。WPF listview - 選択と選択された項目の透明な背景

私は(WPFアプリケーションではありませんこれは、しかし、私は、WPFコントロールを追加することができます)別のアプリケーションにインポートされますWPFコントロールを構築しています、このコントロールは、単純なリストビューウィッヒでこれらの機能している: を - 透明な背景 - ボーダー私の他のアプリケーションでは、私は影で暗い背景を持っていると私はあなたが背景

は、インターネット上で検索を参照してくださいすることができますので、このコントロールが透明になりたいので、私はこれをやっている

角を丸くして私は、私は必要なものを見つけますしかし私が欠けているのは、選択したアイテムの背景をフォアグラウンドに変更し、マウスがアイテムの上にあるときに同じものを変更することです

<Window x:Class="TestWPF.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Height="501" Width="792"> 
<Window.Background> 
    <ImageBrush ImageSource="C:\\BkGd.png"></ImageBrush> 
</Window.Background> 

    <Grid> 
    <ListView Margin="10" Name="lvUsers" Background="Transparent" Foreground="White" FontStyle="Normal" FontWeight="Normal" FontFamily="Segoe UI" > 
     <ListView.ItemContainerStyle> 
      <Style TargetType="{x:Type ListViewItem}"> 
       <Style.Resources> 
        <!-- Foreground for Selected ListViewItem --> 
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" 
          Color="Black"/> 
        <!-- Background for Selected ListViewItem --> 
        <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" 
          Color="Transparent"/> 
       </Style.Resources> 
      </Style> 
     </ListView.ItemContainerStyle> 

     <ListView.Template> 
      <ControlTemplate TargetType="{x:Type ListView}"> 
       <Border CornerRadius="3" BorderThickness="1" BorderBrush="DarkGray"> 
        <ScrollViewer> 
         <ItemsPresenter /> 
        </ScrollViewer> 
       </Border> 
      </ControlTemplate> 
     </ListView.Template> 

     <ListView.View> 
      <GridView AllowsColumnReorder="False"> 
       <GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" /> 
       <GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" /> 
       <GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" /> 
      </GridView> 
     </ListView.View> 

    </ListView> 

</Grid> 

これは背景と丸みを帯びた角のボーダーのため正常に動作しますが、アイテムは、光で強調表示され続ける:これは私がテストのために使用していたコードである

を(それは明らかだ願っています)色と白いテキスト、whickは私には良くない。私が持っていると思うのは、強調表示された項目の代わりにマウスのホバーと選択された項目の両方のために透明な枠線を持つことです。

もう1つのことは、テンプレートを追加したので、ヘッダーはもう表示されませんが、ヘッダーも追加したいと思います。

誰でもこの作業を手伝ってもらえますか?事前に

EDIT 多くのおかげ: これは Imageを何が起こるかの画像です。代わりに透明な枠線を使用したいと考えています

EDIT 2: 背景は画像です。私は "ListView.View"の部分をコメントしようとしたと私はこのimageに示されているようにしたい結果があるが、項目は表示されません。コードで項目を追加する必要があります

+0

は、あなたが持っているものの画像を投稿することができ、あなたが必要なもの? – Prajwal

+0

ウィンドウの背景を透明に設定します。だからあなたは窓の背景色を見ているのです。 – Prajwal

+0

@Prajwal私はポストで言ったように、背景はイメージです。私はしようとしたが、私はバックグラウンドのプロパティを追加することはできません。 ListView.Viewの部分が問題を引き起こすと思われます。 – Hydra

答えて

0
<Window.Background> 
     <ImageBrush ImageSource="C:\\BkGd.png"></ImageBrush> 
</Window.Background> 

これは実際に背景を設定しています。

<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" 
          Color="Transparent"/> 
</Style.Resources> 

は、選択した項目の背景を透明に設定しています。したがって、あなたは窓の背景を取得しています。しかし、あなたはその青いハイライトのためにそれを見ていません。そのためには、デフォルトのコントロールスタイルをオーバーライドする必要があります。

ここでその方法を説明します。

Overriding Control Styles

関連する問題