2009-09-18 45 views
0

我只有在选择ListViewItem时才显示图像。我拥有的代码无法正常工作,但我认为它说明了我想要完成的任务。如何在选择ListViewItem时触发控件事件?

<GridViewColumn> 
    <GridViewColumn.CellTemplate> 
     <DataTemplate> 
     <Image Height="20"> 
      <Image.Style> 
       <Style TargetType="{x:Type Image}"> 
        <Setter Property="Visibility" Value="Collapsed" /> 
        <Style.Triggers> 
        <DataTrigger Binding="{Binding RelativeSource= 
          { 
           RelativeSource 
           Mode=FindAncestor, 
           AncestorType={x:Type ListViewItem} 
          }, Path=IsSelected}" Value="True"> 
         <Setter Property="Visibility" Value="Visible" /> 
         <Setter Property="Source" Value="/Russound.Windows;component/Resources/2leftarrow-64.png" /> 
         <Setter Property="ToolTip" Value="Selected" /> 
        </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Image.Style> 
     </Image> 
     </DataTemplate> 
    </GridViewColumn.CellTemplate> 
</GridViewColumn> 

回答

0

只需将默认可见性更改为隐藏而不是折叠。

显然,如果您使用折叠,元素将从可视树中移除,并且RelativeSource不再有效。

+0

更改为隐藏是不行Jalfp – Russ 2009-09-18 15:35:02

+0

我构建了一个示例应用程序,使用您的代码隐藏而不是折叠。也许我不明白你想完成什么...... – japf 2009-09-21 07:14:12

1

在处理绑定问题时,我通常会搜索Output窗口以查找任何绑定错误。它们都以System.Windows.DataError开头。那么,Output窗口中是否有任何错误?

+0

嗯,我会说,我不知道输出窗口中的DataError。谢谢,我解决了其他几个绑定问题,但是,这个具体问题并没有引发错误。 – Russ 2009-09-18 17:08:28

+0

哦,对不起,+1教我新的东西。 – Russ 2009-09-18 17:09:00

+0

试试这个,有两个DataTriggers,当IsSelected为true时,另一个为false。并删除该Setter。我怀疑的是,依赖属性解析总是选择该设置值,因为它具有比样式触发更高的优先级。我以前遇到过这个问题,但我不记得确切的情况。 – Trainee4Life 2009-09-18 18:03:22