2012-08-16 50 views
2

问题可以通过下面的代码进行复制时,点击物品不要让选择:ListView和触发器;鼠标

<ListView> 

    <ListView.ItemContainerStyle> 
     <Style TargetType="{x:Type ListViewItem}"> 
      <Setter Property="VerticalContentAlignment" Value="Center" /> 
      <Setter Property="HorizontalContentAlignment" Value="Left" /> 
      <Style.Triggers> 
       <Trigger Property="IsMouseOver" Value="True"> 
        <Setter Property="Background" Value="{x:Null}" /> 
        <Setter Property="BorderBrush" Value="{x:Null}" /> 
       </Trigger> 
       <Trigger Property="IsSelected" Value="True"> 
        <Setter Property="Background" Value="#FFEDC4" /> 
        <Setter Property="BorderBrush" Value="{x:Null}" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ListView.ItemContainerStyle> 

    <ListView.Items> 
     <ListViewItem Height="70">Some item</ListViewItem> 
     <ListViewItem Height="70">Some item</ListViewItem> 
     <ListViewItem Height="70">Some item</ListViewItem> 
     <ListViewItem Height="70">Some item</ListViewItem> 
    </ListView.Items> 

</ListView> 

控制有问题,让鼠标点击正确。点击项目文字效果很好,并选择该项目。点击文字以外的任何地方(在TextBox之外,但在ListViewItem之内)可以工作80%的时间,但每隔5秒就不工作。该项目未被选中。这不仅是视觉风格错误,该项目没有被选中,可以用键盘方向键进行检查。

添加触发器后开始一切。删除IsMouseOver触发器有帮助。

这里有什么问题?

回答

4

使用

<Setter Property="Background" Value="Transparent" /> 

,而不是{x:Null}。否则,鼠标事件不会被捕获。

+0

令人难以置信,它的工作原理。非常感谢。我真的很惊讶'{x:null}'做出了这样奇怪的行为,而不是让它不工作。 – Arek 2012-08-16 12:49:36