我有一个带有几个GridViewColumn的ListView。其中一列我显示了层的可见性,我绑定了图标和不透明度,但我不确定如何将其绑定到一个名为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;发布于 2011-04-20 01:14:39
编辑: ok,所以我认为现在应该很好了..
仍然假设你的集合是一个集合:
public class Effect : INotifyPropertychanged
{
//Some properties
private bool isVisible;
public bool IsVisible
{
get { return isVisible;}
set { isVisible=value;//plus raise propertychanged notification}
}
}然后,我认为将图像单击传播到您的code属性和图像不透明度的最简单方法是将图标包装在切换按钮中。这是我用过并测试过的代码。只需将值替换为您的值,并将其放入您的数据模板中,这一次应该可以很好地工作:
<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>发布于 2011-04-20 01:13:35
不知道是否需要更改不透明度值。您需要绑定的是图像的可见性属性,并使用一个转换器将布尔IsVisible转换为可见性枚举值。
请参阅http://www.jeff.wilcox.name/2008/07/visibility-type-converter/
https://stackoverflow.com/questions/5719870
复制相似问题