2017-04-16 5 views
0

Ich habe eine Listview und Padding muss 2 und Farbe System-Thema (mit Windows 8.1) bekommen, aber sehr hässlich aussehen.WPF ListView IsSelected Setze Grenztrübung

<ListView.Resources> 
<Style TargetType="ListViewItem"> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="ListViewItem"> 
       <Border Name="Border" Padding="2" SnapsToDevicePixels="True"> 
        <ContentPresenter /> 
       </Border> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsSelected" Value="true"> 
         <Setter TargetName="Border" Property="Background" Value="{x:Static SystemParameters.WindowGlassBrush}"/> 
        </Trigger> 
        <Trigger Property="IsMouseOver" Value="true"> 
         <Setter Property="IsSelected" Value="true"/> 
        </Trigger> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
</ListView.Resources> 

TIPP: verwendete ich Corner = 10 in Datatemplate.

<DataTemplate x:Key="DT"> 
<StackPanel Orientation="Vertical"> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="50*"/> 
      <RowDefinition Height="50*"/> 
     </Grid.RowDefinitions> 

     <Border Background="{Binding HEXRengi}" MinHeight="100" MinWidth="150" Height="100" Width="150" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.RowSpan="2" CornerRadius="10"/> 


     <ToggleButton x:Name="HEXRenkAl" Style="{DynamicResource DüzRenkPaletiDüğmeBiçimi}" Grid.Row="0" Click="HEXRenkAl_Click"> 
      <Border Background="{Binding HEXRengi}" MinHeight="50" MinWidth="150" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" CornerRadius="10"> 
       <TextBox Text="{Binding HEXRengi}" Style="{DynamicResource SeçilebilirAmaYazılamazMetinKutusu}" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Justify" TextWrapping="Wrap" Foreground="White" FontFamily="Century Gothic" FontSize="16" FontWeight="Bold"/> 
      </Border> 
     </ToggleButton> 

     <ToggleButton x:Name="RGBRengiAl" Style="{DynamicResource DüzRenkPaletiDüğmeBiçimi}" Grid.Row="1" Click="RGBRengiAl_Click"> 
      <Border Background="{Binding HEXRengi}" MinHeight="50" MinWidth="150" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" CornerRadius="05"> 
       <TextBox Text="{Binding RGBRengi}" Style="{DynamicResource SeçilebilirAmaYazılamazMetinKutusu}" VerticalAlignment="Center" HorizontalAlignment="Center" TextAlignment="Justify" TextWrapping="Wrap" Foreground="White" FontFamily="Century Gothic" FontSize="16" FontWeight="Bold"/> 
      </Border> 
     </ToggleButton> 

    </Grid> 
</StackPanel> 
</DataTemplate> 

Aussehen wie folgt;

enter image description here

Und IsSelected;

enter image description here

Wenn ich Set-Eigenschaft Lässigkeitswert verwendet gelten alle Artikel. sollte nur auf Grenze, nicht alle Artikel gelten.

<Trigger Property="IsSelected" Value="true"> 
<Setter TargetName="Border" Property="Background" Value="{x:Static SystemParameters.WindowGlassBrush}"/> 
<Setter TargetName="Border" Property="Opacity" Value=".5"/> 
</Trigger> 

enter image description here

Wie kann ich es tun? Danke für Ratschläge.

Antwort

0

Wenn ich Setter-Eigenschaft Opazität Wert verwendet alle Artikel anwenden. Nur sollte am Rand, nicht alle Artikel gelten.

Wenn Sie sich fragen, warum Lässigkeitswert für alle Elemente der Anwendung, das ist, weil Sie „Border“ genannt haben und die Sie zielen namentlich in Ihrem Trigger.

<Border Name="Border" Padding="2" SnapsToDevicePixels="True"> 
    <ContentPresenter /> 
</Border> 
+0

Ich weiß, aber möchte nur wissen, wie man die Ränder anzuwenden. –

+0

Entschuldigung, es ist schwer deine Frage zu verstehen. Sie sollten die "_edge_", auf die Sie abzielen, benennen und diese in Ihrem Auslöser anvisieren. Wenn Sie es mit Blend versuchen, ist es vielleicht einfacher, herumzuspielen. – Bubba

+0

Danke, ich arbeite. –