2017-04-16 85 views
0

我有一個列表視圖和填充必須是2和顏色的獲取系統主題(使用Windows 8.1),但看起來非常醜陋。WPF ListView IsSelected設置邊框不透明度

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

TIP:我在使用的DataTemplate CornerRadius = 10。

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

看起來像這樣;

enter image description here

而且IsSelected;

enter image description here

當我用setter屬性不透明度值適用於所有項目。 只需在邊境申請,而不是全部項目

<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

我該怎麼辦呢?感謝您的建議。

回答

0

當我使用setter屬性不透明度值應用所有項目。只是應該適用於邊界,而不是所有的項目。

如果你想知道爲什麼不透明度值適用於所有項目,那是因爲你有一個名爲「邊框」和你的名字你Trigger目標。

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

我知道,但只是想知道如何應用到邊緣。 –

+0

抱歉,很難理解你的問題。您應該命名您所定位的「_edge_」,並將其作爲觸發器的目標。此外,如果您嘗試使用Blend,可能會更容易玩弄。 – Bubba

+0

謝謝,我正在工作。 –