我有一个UserControl将文本转换为形状。然后,我可以抚摸它或用刷子填充它。当我尝试使用具有MediaElement(视频)的Visual Brush作为源时,我遇到了问题。当我直接在XAML中做如下:在风格中使用MediaElement的VisualBrush
<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的回答似乎已经解决了它。谢谢马克! – Frandelsan