WPF OpacityMask以子元素的负边距移动

时间:2016-02-28 19:47:09

标签: wpf

当我将带有负边距的元素放入ie时。使用OpacityMask边框,也会移动蒙版。

有没有人知道是否有办法将不透明蒙板应用于Border控件的视口而不管任何边距?

我想要实现的只是边框内容的中心线应该是完全可见的。我通过将边框内该元素的边距设置为负值来移动文本(在我的例子中是一个ItemsSource)。这产生了一种很酷的效果,其他线条也在不透明度下松动,因此中心线明显可见为当前线条。不幸的是,WPF也会移动我的Mask,因此当移动内容时,完全可见的线也会在Border控件中向上移动。

<Popup x:Name="PART_Popup" 
             VerticalOffset="{TemplateBinding TumblerVOffset}" IsOpen="{TemplateBinding IsTumblerVisible}"
             PlacementTarget="{Binding RelativeSource={RelativeSource AncestorType={x:Type controls:TouchEditBox}}}"
             MinWidth="{TemplateBinding TumblerWidth}" AllowsTransparency="True"
             Height="{TemplateBinding TumblerHeight}" Placement="Relative">
    <Border Background="{StaticResource TumblerBackground}" BorderBrush="White" BorderThickness="1">
        <Border.OpacityMask>
            <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                <LinearGradientBrush.GradientStops>
                    <GradientStop Color="Transparent" Offset="0.0" />
                    <GradientStop Color="Black" Offset="0.4" />
                    <GradientStop Color="Black" Offset="0.6" />
                    <GradientStop Color="Transparent" Offset="1.0" />
                </LinearGradientBrush.GradientStops>
            </LinearGradientBrush>
        </Border.OpacityMask>
        <ItemsControl ItemsSource="{Binding TumblerHandler.Tumblers, RelativeSource={RelativeSource TemplatedParent}}"
                                    HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <StackPanel Orientation="Horizontal" />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>
    </Border>
</Popup>

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案 - 在Container上设置ClipToBounds =“True”,它保存了Margin为负数的元素(在我的例子中是ItemsControl)。