2016-11-28 2 views
0

Я искал какое-то время в Интернете и здесь, чтобы найти решение по моей проблеме, но я не знаю, почему все решения, которые я пробовал, не работают. Я должен сказать в первую очередь, что я совершенно новый в WPF, поэтому, возможно, это может быть реальной проблемой, но я объясню, чего я хочу достичь.WPF listview - Прозрачный фон по выбору и выделенным элементам

Я строй управления WPF я буду импортировать в другом приложении (которое не является приложение WPF, но я могу добавить элементы управления WPF), этот элемент управлением является простым ListView которым имеет следующие возможности: - прозрачный фон - граница с закругленными углами

Я делаю это потому, что в моем другом приложении у меня есть темный фон с оттенками и я хочу этот контроль, чтобы быть прозрачным, чтобы вы могли видеть фон

Поиск в Интернете я нашел то, что мне нужно, но то, что мне не хватает, - это изменить выбранный элемент background-foreground и ту же самую вещь, когда мышь находится над элементом (Надеюсь, это понятно)

Это код, я использую для испытаний:

<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> 

Это прекрасно работает для фона и закругленной угловой границы, но элементы продолжают быть выделены светом цвета и белый текст, плыть не хорошо для меня. Я бы хотел иметь прозрачную рамку вместо выделенного элемента, как для мыши, так и для выбранного элемента.

Другое дело в том, что, поскольку я добавил шаблон, заголовок больше не отображается, но я тоже хочу иметь заголовок.

Может ли кто-нибудь помочь мне сделать это? Большое спасибо заранее

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

Смежные вопросы