2011-04-19 59 views
0

我有一个ListView几个GridViewColumn。其中一列显示图层的可见性,并且我将图标和不透明度绑定在一起,但我不确定如何将其绑定到名为IsVisible的属性,以便每当在该列中单击某个项目时,它将切换IsVisible布尔值。简单的GridViewColumn绑定问题

有关如何做到这一点的任何想法?

<GridViewColumn Width="20"> 
    <GridViewColumnHeader Content="X" /> 
    <GridViewColumn.CellTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <Image Width="18" 
       Height="18" 
       Source="{Binding VisibleIcon}" 
         Opacity="{Binding VisibleOpacity}" 
         /> 
      </StackPanel> 
     </DataTemplate> 
    </GridViewColumn.CellTemplate> 
</GridViewColumn> 

此外,VisibleOpacity定义为Opacity的图标,但我觉得这是不这样做,因为我必须仅仅是为了这个目的创建这个属性的好方法。有没有办法在XAML内联执行此操作?也许像:

Opacity = (this.IsVisible) ? 1 : 0.5; 

回答

2

编辑:好了,我想这应该是现在好了..

不过假设你收集的集合:

public class Effect : INotifyPropertychanged 
{ 
    //Some properties 


    private bool isVisible; 
    public bool IsVisible 
    { 
     get { return isVisible;} 
     set { isVisible=value;//plus raise propertychanged notification} 
    }  
} 

那么我认为传播图像的最简单方法是点击代码属性和图像不透明度,将图标包装在切换按钮中。这是我使用和测试的代码。仅仅通过更换你的价值观,并把这个数据中的模板,它应该很好地工作这段时间:

<ToggleButton x:Name="tgBtn" Height="20" Width="20" IsChecked="{Binding IsVisible}" 
       BorderThickness="0" Background="Transparent" > 
    <ToggleButton.Style> 
     <Style TargetType="{x:Type ToggleButton}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate> 
         <Image Width="18" 
          Height="18"     
          Source="C:\USERS\thumbnail.jpeg"> 
          <Image.Style> 
           <Style TargetType="{x:Type Image}"> 
            <Setter Property="Opacity" Value="1"/> 
            <Style.Triggers> 
             <DataTrigger Binding="{Binding ElementName=tgBtn, Path=IsChecked}" Value="false"> 
              <Setter Property="Opacity" Value="0.5"/> 
             </DataTrigger> 
            </Style.Triggers> 
           </Style> 
          </Image.Style> 
         </Image> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </ToggleButton.Style> 
</ToggleButton> 
+0

谢谢了'IsVisible'属性是Effect'的'每个实例里面,所以我做到了这一点,但没” t工作:'' 我做错了吗? – 2011-04-19 17:28:58

+0

如果列表数据绑定到具有IsVisible属性的实例列表,我不认为您需要{Binding}中的ElementName属性,只是路径。 – 2011-04-19 17:34:41

+0

感谢克雷格,它已经被列入清单。所以我应该使用'Binding =“{Binding Path = IsVisible}”'。这可以消除输出窗口中打印的绑定错误,但是我看不到不透明度的变化。 – 2011-04-19 17:37:26