在我的C# / WPF / .NET 4.5应用程序中,我想实现一个触发器,可以切换控件的背景不透明度而不改变其颜色。
通常,要设置控件的背景画刷,我会使用以下Setter:
现在我面临这样的情况:我只需更改透明度而不更改颜色。如果这种情况下我的setter会是什么样子呢?我并不关心背景颜色是什么,但我希望在更改透明度的同时保留颜色。
更多细节:
原因是我正在处理一个ItemsControl,在这个控件中,背景颜色根据项目的AlternationIndex而变化。
通常,要设置控件的背景画刷,我会使用以下Setter:
<Setter TargetName="TargetControl" Property="Background">
<Setter.Value>
<SolidColorBrush Color="Red" Opacity="0.2"/>
</Setter.Value>
现在我面临这样的情况:我只需更改透明度而不更改颜色。如果这种情况下我的setter会是什么样子呢?我并不关心背景颜色是什么,但我希望在更改透明度的同时保留颜色。
更多细节:
原因是我正在处理一个ItemsControl,在这个控件中,背景颜色根据项目的AlternationIndex而变化。
<ItemsControl ItemsSource="{Binding SomeCollection}" AlternationCount="6">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid x:Name="GridWithin">
<!-- ... -->
</Grid>
<DataTemplate.Triggers>
<!-- Aternating colors for each row -->
<Trigger Property="ItemsControl.AlternationIndex" Value="0">
<Setter TargetName="GridWithin" Property="Background">
<Setter.Value>
<SolidColorBrush Color="Red" Opacity="0.2"/>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="ItemsControl.AlternationIndex" Value="1">
<Setter TargetName="AllGesturesDataTemplateGrid" Property="Background">
<Setter.Value>
<SolidColorBrush Color="Green" Opacity="0.2"/>
</Setter.Value>
</Setter>
</Trigger>
<!-- ... -->
<!-- Highlight when a hit is registered -->
<DataTrigger>
<DataTrigger.Conditions>
<Condition Binding="{Binding IsHit}" Value="True" />
</MultiDataTrigger.Conditions>
<!-- The culprit -->
<Setter TargetName="GridWithin" Property="Background">
<Setter.Value>
<SolidColorBrush Opacity="0.7"/>
</Setter.Value>
</Setter>
<!-- /culprit -->
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Rectangle
方法 =) - mbaytas