2016-11-16 87 views
0

我有这个标记,当它的IsEnabled = false时,我的背景颜色不会保持为null。我尝试了一种样式触发器,它在变成禁用状态时会改变它,但它没有奏效。如何使我的ListView背景颜色为空时,其禁用GridView?WPF不能用gridview改变listview背景

<ListView Background="{x:Null}" IsEnabled="False"> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn Header="First Name" DisplayMemberBinding="{Binding FirstName}"/> 
        <GridViewColumn Header="Last Name" DisplayMemberBinding="{Binding LastName}"/> 
        <GridViewColumn Header="Email" DisplayMemberBinding="{Binding EmailAddress}"/> 
       </GridView> 
      </ListView.View> 
      <ListView.ItemContainerStyle> 
       <Style TargetType="ListViewItem"> 
        <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
       </Style> 
      </ListView.ItemContainerStyle> 
     </ListView> 

在App.xaml中

<Style TargetType="ListView"> 
    <Setter Property="BorderThickness" Value="0"/> 

    <Style.Triggers> 
     <Trigger Property="IsEnabled" Value="False"> 
      <Setter Property="Background" Value="Transparent" /> 
     </Trigger> 
    </Style.Triggers> 

</Style> 
+0

你使用MVVM? – Bigeyes

+0

是的,我愿意。/\/\ / – shady

回答

1

刚刚尝试这一点,

<ListView Background="Transparent" IsEnabled="False"> 
    <ListView.Template> 
     <ControlTemplate TargetType="ListView"> 
      <Border Name="Border"       
        BorderThickness="1"> 
       <ScrollViewer Style="{DynamicResource {x:Static GridView.GridViewScrollViewerStyleKey}}"> 
        <ItemsPresenter /> 
       </ScrollViewer> 
      </Border> 
      <ControlTemplate.Triggers> 
       <Trigger Property="IsGrouping" Value="true"> 
        <Setter Property="ScrollViewer.CanContentScroll" Value="false" /> 
       </Trigger> 
       <Trigger Property="IsEnabled" Value="false"> 
        <Setter TargetName="Border" Property="Background" Value="Transparent" /> 
       </Trigger> 
      </ControlTemplate.Triggers> 
     </ControlTemplate> 

    </ListView.Template> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn DisplayMemberBinding="{Binding FirstName}" Header="First Name" /> 
      <GridViewColumn DisplayMemberBinding="{Binding LastName}" Header="Last Name" /> 
      <GridViewColumn DisplayMemberBinding="{Binding EmailAddress}" Header="Email" /> 
     </GridView> 
    </ListView.View> 
    <ListView.ItemContainerStyle> 
     <Style TargetType="ListViewItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
     </Style> 
    </ListView.ItemContainerStyle> 
</ListView>