简单的GridViewColumn绑定问题

本文关键字:问题 绑定 GridViewColumn 简单 | 更新日期: 2023-09-27 17:50:39

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

有什么好主意吗?

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

简单的GridViewColumn绑定问题

编辑:好的,所以我认为现在应该很好了。

仍然假设您的集合是以下集合:

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>

不知道你需要改变不透明度值。你需要绑定的是图像的可视性属性,并使用一个转换器将布尔值IsVisible转换为可视性enum值。

见http://www.jeff.wilcox.name/2008/07/visibility-type-converter/