我想在不使用滚动条的情况下为触摸屏应用程序创建自定义scrollviewer控件.为了让用户知道他们可以滚动内容,我使用opacitymask以线性渐变淡化滚动查看器的底部和顶部.这一切都很好,除了滚动查看器之外的opacitymask应用于文本块的问题!
我的意思是,我希望将渐弱效果应用于scrollviewer的顶部1%和底部1%,然后滚动查看器的中间部分将可见.然而,问题是,即使我在文本块上设置了OpacityMask ="{x:Null}",滚动查看器中的控件也会发生这种效果.
我已经尝试将opacitymask应用到scrollviewer的外部,但同样的问题发生了.Opacitymask属性是否也适用于孩子?有没有更好的方法来做这种褪色效果?
这是我正在使用的代码:
<Grid Width="200" Height="130">
<ScrollViewer BorderThickness="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Padding="2"
HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Hidden" >
<ScrollViewer.OpacityMask>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="Transparent" Offset="0" />
<GradientStop Color="Black" Offset="0.1" />
<GradientStop Color="Black" Offset="0.9" />
<GradientStop Color="Transparent" Offset="1" />
</LinearGradientBrush>
</ScrollViewer.OpacityMask>
<TextBlock Margin="0,10" Style="{StaticResource textSmall}" TextWrapping="Wrap">
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis …Run Code Online (Sandbox Code Playgroud) 我在ResourceDictionary xaml文件中有一个Canvas,如下所示:
<Canvas x:Key="Icon">
<Path ... />
<Path ... />
</Canvas>
Run Code Online (Sandbox Code Playgroud)
在我的代码隐藏中,我使用加载此图标
LayoutGrid.Children.Add(FindResource("Icon") as Canvas);
Run Code Online (Sandbox Code Playgroud)
这很好用.现在我想创建一个使用相同图标作为模板的按钮.所以我创建了一个控件模板:
<ControlTemplate x:Key="IconTemplate">
...
</ControlTemplate>
Run Code Online (Sandbox Code Playgroud)
现在问题是:如何将"Icon"资源画布放入控件模板?据我所知,Canvas没有Style或Template属性.它有一个儿童酒店,但无法通过XAML访问.我如何在模板中使用我的画布?