【发布时间】:2016-02-25 21:32:33
【问题描述】:
我有一个将文本转换为形状的 UserControl。然后我可以描边它或用刷子填充它。当我尝试使用带有 MediaElement(视频)的 Visual Brush 作为源时,我遇到了问题。当我直接在 XAML 中执行以下操作时:
<custom:ExtendedTextBlock Text="Video Filled Text" FontFamily="Arial Black" FontSize="60">
<custom:ExtendedTextBlock.Fill>
<VisualBrush>
<VisualBrush.Visual>
<MediaElement Source="assets\1267066.mp4" Width="596" Height="366" LoadedBehavior="Play" Stretch="UniformToFill" MediaEnded="MediaElement_MediaEnded" MediaFailed="MediaElement_MediaFailed" MediaOpened="MediaElement_MediaOpened" />
</VisualBrush.Visual>
</VisualBrush>
</custom:ExtendedTextBlock.Fill>
</custom:ExtendedTextBlock>
效果很好。当我尝试使用相同的信息创建样式时出现问题:
<Style x:Key="VideoFill" TargetType="{x:Type custom:ExtendedTextBlock}">
<Setter Property="StrokeThickness" Value="2" />
<Setter Property="Stroke" Value="Black" />
<Setter Property="Fill">
<Setter.Value>
<VisualBrush>
<VisualBrush.Visual>
<MediaElement Source="assets/1267066.mp4" Width="596" Height="366" LoadedBehavior="Play" LoadedBehavior="Play" Stretch="UniformToFill" MediaEnded="MediaElement_MediaEnded" MediaFailed="MediaElement_MediaFailed" MediaOpened="MediaElement_MediaOpened" />
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</Style>
我没有得到填补。没有抛出 MediaOpened,也没有抛出 MediaFailed。它只是不渲染填充。使用与 SolidColorBrush、LinearGradientBrush、ImageBrush 相同的方法都可以完美地工作。谁能告诉我这是怎么回事?
【问题讨论】:
-
Mark Feldmans 的回答似乎已经解决了。谢谢马克!